本筆記來源于B站Up主: 有Li 的影像組學(xué)系列教學(xué)視頻
本節(jié)(19)主要介紹: 數(shù)據(jù)的標(biāo)準(zhǔn)化、歸一化
為什么要進(jìn)行標(biāo)準(zhǔn)化、歸一化?
1.機(jī)器學(xué)習(xí)算法的要求
2.便于橫向比較
# 標(biāo)準(zhǔn)化 (影像組學(xué)中最常用)
# z = (x - u)/s
# 異常值一般對結(jié)果影響不大
from sklearn.preprocessing import StandardScaler
data = [[10,-20],[0.3,999],[-1,12],[0.1,21]]
res = StandardScaler().fit_transform(data)
print(res)
Output:
# [[ 1.72127555 -0.63345074]
# [-0.46125685 1.73096796]
# [-0.75376119 -0.55920011]
# [-0.50625751 -0.53831711]]
# 歸一化
# X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
# 異常值有可能對結(jié)果有重要影響
from sklearn.preprocessing import MinMaxScaler
data = [[10,-20],[0.3,999],[-1,12],[0.1,21]]
res = MinMaxScaler().fit_transform(data)
print(res)
Output:
# [[1. 0. ]
# [0.11818182 1. ]
# [0. 0.03140334]
# [0.1 0.04023553]]
# 與IQR第1四分位數(shù)(第25個分位數(shù))和第3個四分位數(shù)(第75個分位數(shù))之間的范圍相關(guān)。
# 不常用
from sklearn.preprocessing import RobustScaler
data = [[10,-20],[0.3,999],[-1,12],[0.1,21]]
res = RobustScaler().fit_transform(data)
print(res)
Output:
[[ 3.37931034 -0.13957935]
[ 0.03448276 3.75717017]
[-0.4137931 -0.01720841]
[-0.03448276 0.01720841]]
Notes:
# 影像組學(xué)研究中有兩處涉及標(biāo)準(zhǔn)化或歸一化,一是在圖像預(yù)處理時,二是特征提取后
# Image normalization 圖像歸一化
# normalize 當(dāng)設(shè)置為True時, 對圖像進(jìn)行歸一化處理,默認(rèn)為False
# normalizeScale: 對圖像進(jìn)行歸一化處理的比例,默認(rèn)為1
# RemoveOutliers: 從圖像中剔除的離群值
繼續(xù)深化學(xué)習(xí)這兩個概念時,發(fā)現(xiàn)網(wǎng)上對這個的討論很熱鬧,原因是由于翻譯的不一致,導(dǎo)致概念的混亂,所以最好的辦法就是回歸英文中的本來定義。
"標(biāo)準(zhǔn)化"和"歸一化"這兩個中文詞要指代四種Feature scaling(特征縮放)方法:
FeatureScaling.JPG
Rescaling (min-max normalization) ,有時簡稱normalization(有點坑)。
一般把第一種叫做歸一化,第三種叫做標(biāo)準(zhǔn)化。
具體可參考知乎上的討論帖:標(biāo)準(zhǔn)化和歸一化什么區(qū)別? 答主@龔焱
及@gokenu回答的比較詳細(xì)了。