常見的數據歸一化方法
min-max標準化(Min-max normalization)/0-1標準化(0-1 normalization)
也叫離差標準化,是對原始數據的線性變換,使結果落到[0,1]區間,轉換函數如下:
其中max爲樣本數據的最大值,min爲樣本數據的最小值。
def Normalization(x):
return [(float(i)-min(x))/float(max(x)-min(x)) for i in x]
如果想要將數據映射到[-1,1],則將公式換成:
x∗=x−xmean/xmax−xmin
x_mean表示數據的均值。
def Normalization2(x):
return [(float(i)-np.mean(x))/(max(x)-min(x)) for i in x]
這種方法有一個缺陷就是當有新數據加入時,可能導致max和min的變化,需要重新定義。
log函數轉換
通過以10爲底的log函數轉換的方法同樣可以實現歸一下,具體方法如下:
看了下網上很多介紹都是x*=log10(x),其實是有問題的,這個結果並非一定落到[0,1]區間上,應該還要除以log10(max),max爲樣本數據最大值,並且所有的數據都要大於等於1。