벡터를 임의의 범위로 표준화
이제 $v$ 를 다음과 같이 임의의 숫자를 가진 벡터로 만듭니다.
random_vector.py
import random
random.seed(1)
v = [random.random() for _ in range(10)]
위의 python 코드에서 $v$ 는 예를 들면 다음과 같이 주어진다.
이 벡터를 범위 $[0,1],[-1,1]$로 표준화하려면 각각 이렇게 합니다.
\frac{v - min(v)}{max(v) - min(v)}
\frac{2v - (max(v) + min(v))}{max(v)-min(v)}
이것은 $v$를 선형으로 표준화합니다.
단지, 벡터를 임의의 범위 [newmin, newmax] 에 표준화하고 싶을 때가 있네요.
그런 경우에는 먼저 2개의 정수 $a, b$ 를 계산합니다.
a = (newmax - newmin)/(max(v) - min(v)) \\
b = newmax - a*max(v)
이 때, $b = newmin - a*min(v)$에서도 같습니다.
마지막으로, $a$ 가 기울여, $b$ 가 절편이 되는 1차 함수를 만들어, 원의 벡터 $v$ 를 대입하면, 선형으로 표준화된 새로운 벡터가 나옵니다.
normalized\ vector = a*v + b
이것이 벡터를 선형으로 표준화할 때의 일반형입니다.
Python, Matlab에서 벡터 $v$를 범위 [newmin, newmax]로 표준화하는 코드를 올려 놓습니다.
파이썬
normalize.py
def normalize(v,newmin,newmax):
a = (newmax - newmin)/(max(v) - min(v))
b = newmax - a*max(v)
return [a*i + b for i in v]
Matlab
normalize.m
function [normalized_vector] = normalize(v, newmin, newmax)
a = (newmax - newmin)/(max(v) - min(v));
b = newmax - max(v)*a;
normalized_vector = a*v + b;
Reference
이 문제에 관하여(벡터를 임의의 범위로 표준화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/katsu1110/items/84db05a2c5a7836fd43f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)