一、標准化Standardization(z-score方法):
利用公式:( x-mean(x) ) / std(x) 對具有S相同屬性的數據(即一列)做標准化處理,使數據服從零均值標准差的高斯分布。這種方法一般要求原數據的分布近似高斯分布。
涉及距離度量、協方差計算時可以應用這種方法。將有量綱數據化為無量綱數據,使數據能在同一數量級上進行比較。
from sklearn import preprocessing import pandas as pd import numpy as np mean=[4,3] cov=[[2.0,5.],[1.,1.]] x=np.random.multivariate_normal(mean,cov,7) data=pd.DataFrame(x) scaler = preprocessing.StandardScaler().fit(data.T) #對行做標准化處理 data_T_scale = scaler.transform(data.T) data_scale = data_T_scale.transpose()
二、歸一化Normalization(min-max scaling)
利用公式 :( x-min ) / ( max-min ) 將原數據等比例縮放到[0,1]范圍內。
涉及距離度量、協方差計算時不能應用這種方法,因為這種線性等比例縮放無法消除量綱對方差、協方差的影響。
min_max_scaler = preprocessing.MinMaxScaler() data_T_minmax = min_max_scaler.fit_transform(data.T) data_minmax = data_T_minmax.T
三、正則化
利用公式:x / || x ||p , 其中|| x ||p= ( x1p+...+xnp )1/p.
處理結果是使同屬性的樣本的p范數為1.
normalizer = preprocessing.Normalizer(copy=True, norm='l2').fit(data.T) data_T_normalize=normalizer.transform(data.T)