Data-Transformation
預處理訓練集和測試集分割前後的區別
**
sklearn
**在將數據拆分為之前和之後對數據集進行預處理有區別train_test_split
嗎?換句話說,這兩種方法是否等效?
from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split #standardizing after splitting X_train, X_test, y_train, y_test = train_test_split(data, target) sc = StandardScaler().fit(X_train) X_train_std = sc.transform(X_train) X_test_std = sc.transform(X_test) #standardizing before splitting data_std = StandardScaler().fit_transform(data) X_train, X_test, y_train, y_test = train_test_split(data_std, target)
不,兩種方法都不等效。
StandardScaler()
通過去除均值和縮放到單位方差來標準化特徵如果您在拆分後擬合縮放器:假設,如果測試集中(拆分後)有任何異常值,則縮放器不會考慮計算均值和方差的那些。
如果您在整個數據集上擬合縮放器然後拆分,縮放器將在計算均值和方差時考慮所有值。
由於在這兩種情況下均值和方差不同,因此擬合和變換函數的執行方式會有所不同。