發布時間: 2019-10-26 10:21:26
數據標準化的介紹
標準化是將訓練集中的某一列 (特征) 縮放成均值為0,方差為1的狀態。
數據標準化(歸一化)處理是數據挖掘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到數據分析的結果,為了消除指標之間的量綱影響,需要進行數據標準化處理,以解決數據指標之間的可比性。原始數據經過數據標準化處理后,各指標處于同一數量級,適合進行綜合對比評價。
標準化的特點
標準化后使得不同度量的數據特征具有可比性,同時不改變數據的原始分布狀態。
標準化對數據進行規范化處理,去除數據的單位限制,將其轉化為無量綱的純數值,便于不同單位或量級的指標能夠進行比較和加權
標準化的方法
min-max標準化(Min-Max Normalization)
離差標準化,是對原始數據的線性變換,使結果值映射到[0 , 1]之間。轉換函數如下:
其中max為樣本數據的較大值,min為樣本數據的最小值。這種方法有個缺陷就是當有新數據加入時,可能導致max和min的變化,需要重新定義。
import numpy as np
arr = np.asarray([0, 10, 50, 80, 100])
for x in arr:
x = float(x - np.min(arr))/(np.max(arr)- np.min(arr))
print x
# output
# 0.0
# 0.1
# 0.5
# 0.8
# 1.0
使用這種方法的目的包括:1、對于方差非常小的屬性可以增強其穩定性;
2、維持稀疏矩陣中為0的條目。
下面將數據縮至0-1之間,采用MinMaxScaler函數
from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
min_max_scaler = preprocessing.MinMaxScaler()
X_minMax = min_max_scaler.fit_transform(X)
結果是
array([[ 0.5 , 0. , 1. ],
[ 1. , 0.5 , 0.33333333],
[ 0. , 1. , 0. ]])
Z-score標準化方法
也稱為均值歸一化(mean normaliztion), 給予原始數據的均值(mean)和標準差(standard deviation)進行數據的標準化。經過處理的數據符合標準正態分布,即均值為0,標準差為1。轉化函數為:
其中 μμ 為所有樣本數據的均值,σσ為所有樣本數據的標準差。
import numpy as np
arr = np.asarray([0, 10, 50, 80, 100])
for x in arr:
x = float(x - arr.mean())/arr.std()
print x
# output
# -1.24101045599
# -0.982466610991
# 0.0517087689995
# 0.827340303992
# 1.34442799399
上一篇: 平均值,方差,標準差
下一篇: {HTML5}事件對象-冒泡和默認行為