數據標准化(歸一化)處理是數據挖掘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到數據分析的結果,為了消除指標之間的量綱影響,需要進行數據標准化處理,以解決數據指標之間的可比性。原始數據經過數據標准化處理后,各指標處於同一數量級,適合進行綜合對比評價。以下是三種常用的歸一化方法:
min-max標准化(Min-Max Normalization)
也稱為離差標准化,是對原始數據的線性變換,使結果值映射到[0 , 1]之間。轉換函數如下:
其中max為樣本數據的最大值,min為樣本數據的最小值。這種方法有個缺陷就是當有新數據加入時,可能導致max和min的變化,需要重新定義。
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. ]])
找大小的方法直接用np.max()和np.min()就行了,盡量不要用python內建的max()和min()
Z-score標准化方法
也稱為均值歸一化(mean normaliztion), 給予原始數據的均值(mean)和標准差(standard deviation)進行數據的標准化。經過處理的數據符合標准正態分布,即均值為0,標准差為1。轉化函數為:
mu(即均值)用np.average()
,sigma(即標准差)用np.std()
即可.
def Z_ScoreNormalization(x,mu,sigma): x = (x - mu) / sigma; return x; b = np.array([[1,2,3],[4,5,6]]) print(Z_ScoreNormalization(b,b.mean(),b.std()))