StandardScaler和scale均為Z-score標准化,即減去均值µ除以標准差σ
而在進行數據標准化的時候,通常有兩種方式:
1)將訓練集和測試集統一進行標准化處理,此時均值和方差為整個數據的均值和方差
2)得到訓練集的均值和標准差,用測試集的數據減去訓練集的均值除以訓練集的標准差。
在結果上來看,兩種方法區別不大,不過第二種更偏向與實際應用場合。
StandardScaler可以預先生成規則,即生成訓練集的均值與標准差,然后利用訓練集的均值和標准差去分別標准化訓練集和測試集!
有點像概率論里的,用訓練集均值代替期望的感覺!
from sklearn.preprocessing import StandardScaler zscore=StandardScaler().fit(raw_train_data) # 按原始訓練集生成規則,即訓練的均值和標准差 train_data=zscore.transform(raw_train_data) # 講規則應用到訓練集 test_data=zscore.transform(raw_test_data) # 將規則應用到測試集