標(biāo)準(zhǔn)化:在機(jī)器學(xué)習(xí)中,我們可能要處理不同種類的資料,例如,音訊和圖片上的像素值,這些資料可能是高緯度的,資料標(biāo)準(zhǔn)化后會使得每個(gè)特征中的數(shù)值平均變?yōu)?(將每個(gè)特征的值都減掉原始資料中該特征的平均),標(biāo)準(zhǔn)差變?yōu)?,這個(gè)方法被廣泛的使用在許多機(jī)器學(xué)習(xí)算法中(例如:支持向量機(jī),邏輯回歸和類神經(jīng)網(wǎng)絡(luò))。
StandardScaler計(jì)算訓(xùn)練集的平均值和標(biāo)準(zhǔn)差,以便測試數(shù)據(jù)及使用相同的變換。
變換后各維特征有0均值,單位方差,也叫z-score規(guī)范化(零均值規(guī)范化),計(jì)算方式是將特征值減去均值,除以標(biāo)準(zhǔn)差。
fit
用于計(jì)算訓(xùn)練數(shù)據(jù)的均值和方差,后面就會用均值和方差來轉(zhuǎn)換訓(xùn)練數(shù)據(jù)
fit_transform
不僅計(jì)算訓(xùn)練數(shù)據(jù)的均值和方差,還會基于計(jì)算出來的均值和方差來轉(zhuǎn)換訓(xùn)練數(shù)據(jù),從而把數(shù)據(jù)轉(zhuǎn)化成標(biāo)準(zhǔn)的正態(tài)分布。
transform
很顯然,它只是進(jìn)行轉(zhuǎn)換,只是把訓(xùn)練數(shù)據(jù)轉(zhuǎn)換成標(biāo)準(zhǔn)的正態(tài)分布。(一般會把train和test集放在一起做標(biāo)準(zhǔn)化,或者在train集上做標(biāo)準(zhǔn)化后,用同樣的標(biāo)準(zhǔn)化器去標(biāo)準(zhǔn)化test集,此時(shí)可以使用scaler)。
data=[[0,0],[0,0],[1,1],[1,1]]
#1.基于mean和std的標(biāo)準(zhǔn)化
scaler=preprocessing.StandardScaler().fit(train_data)
scaler.transform(train_data)
scaler.transform(test_data)
一般來說先使用fit:
1scaler=preocessing.StandardScaler().fit(X)
這一步可以計(jì)算得到scaler,scaler里面存的有計(jì)算出來的均值和方差。
再使用transform
1scaler.transform(X)
這一步再用scaler中的均值和方差來轉(zhuǎn)換X,使X標(biāo)準(zhǔn)化。
最后,在預(yù)測的時(shí)候,也要對數(shù)據(jù)做同樣的標(biāo)準(zhǔn)化處理,即也要用上面的scaler中的均值和方差來對預(yù)測時(shí)候的特征進(jìn)行標(biāo)準(zhǔn)化。
注意:測試數(shù)據(jù)和預(yù)測數(shù)據(jù)的標(biāo)準(zhǔn)化的方式要和訓(xùn)練數(shù)據(jù)標(biāo)準(zhǔn)化的方式一樣,必須使用同一個(gè)scaler來進(jìn)行transform
以上內(nèi)容為大家介紹了python數(shù)據(jù)標(biāo)準(zhǔn)化,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。