歸一化栗柒、標(biāo)準(zhǔn)化和正則化都是對數(shù)據(jù)進(jìn)行處理的礁扮,那么這三種有什么區(qū)別呢?
歸一化(normalization)
歸一化有兩個作用:
- 把數(shù)據(jù)映射到(0傍衡,1)之間方便處理
- 把有量綱表達(dá)式變換為無量綱表達(dá)式深员,成為純量。經(jīng)過歸一化處理的數(shù)據(jù)蛙埂,處于同一數(shù)量級倦畅,可以消除指標(biāo)之間的量綱和量綱單位的影響,提高不同數(shù)據(jù)指標(biāo)之間的可比性绣的。
歸一化的主要方法
1.線性轉(zhuǎn)換叠赐,即min-max歸一化:
2.對數(shù)函數(shù)轉(zhuǎn)換:
3.反余切函數(shù)轉(zhuǎn)換:
y=atan(x)*2/PI
可實現(xiàn)代碼
'''MinMaxScaler方法'''
from sklearn import preprocessing
scaler = preprocessing.MinMaxScaler(feature_range=(0,1), copy=True)
scaler.fit_transform(data)
分別對每一列做做最小最大化歸一化,特征范圍默認(rèn)為(0屡江,1)之間芭概,原理比較簡單,不再累述惩嘉,詳見官方文檔
標(biāo)準(zhǔn)化(Standardization)
數(shù)據(jù)的標(biāo)準(zhǔn)化是將數(shù)據(jù)按比例縮放讓數(shù)據(jù)落入某一特定區(qū)間內(nèi)罢洲,使均值為0。公式為:
與歸一化相比,標(biāo)準(zhǔn)化更為常見惹苗,原因如下:
- 標(biāo)準(zhǔn)化更好的保持了樣本間的距離殿较,當(dāng)樣本中存在異常點時,歸一化有可能將正常值擠到一起桩蓉,而標(biāo)準(zhǔn)化則不會淋纲,例如[1, 2, 10000],假設(shè)10000是異常值院究,那么歸一化之后就會變成[0, 0.0001, 1]洽瞬,正常值1和2就被擠到了一塊。如果不幸的是业汰,1和2不是同一標(biāo)簽伙窃,那么我們在用梯度下降做模型訓(xùn)練時,模型會花更長的時間收斂蔬胯,但標(biāo)準(zhǔn)化的結(jié)果是[-0.70721286,0.7070007,1.41421356]对供,不會將樣本“擠到”一起去;
- 標(biāo)準(zhǔn)化更符合統(tǒng)計學(xué)假設(shè)氛濒。對于一個數(shù)值特征來說产场,很大可能它是服從正太分布的,而標(biāo)準(zhǔn)化是基于這個假設(shè)舞竿,將正態(tài)分布調(diào)整為標(biāo)準(zhǔn)正態(tài)分布京景。
主要方法:
標(biāo)準(zhǔn)化最常用的方法是Z-Score方法,
'''StandardScaler方法'''
from sklearn import preprocessing
scaler = preprocessing.StandardScaler(copy=True, with_mean=True,with_std=True)
scaler.fit_transform(data)
計算公式為:
u為每列訓(xùn)練樣本均值骗奖,s為每列標(biāo)準(zhǔn)差确徙,詳見官方文檔
正則化(Regularization)
'''normalize方法'''
from sklearn import preprocessing
scaler = preprocessing.normalize(data,norm='l2',axis=1,return_norm=False)
norm='l1','l2'或'max',默認(rèn)為‘l2’
官方文檔
參考博客:
數(shù)據(jù)歸一化执桌、標(biāo)準(zhǔn)化和正則化
歸一化鄙皇,標(biāo)準(zhǔn)化,正則化的概念和區(qū)別
sklearn.preprocessing官方文檔