Python:sklearn庫中,數據預處理函數fit_transform()及transform()的區別

本文參考
1.Python: sklearn庫中數據預處理函數fit_transform()和transform()的區別
2.scikit-learn數據預處理fit_transform()與transform()的區別

問題背景

看到100-Days-Of_ML_Code中的一段代碼,發現scikit-learn中的fit_transform()與transform(),不太清楚其中的區別,在網上找了一些資料,記錄一下。

#數據拆分
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
#數據標準化(特徵量化)
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)

可以看到該代碼片段中對訓練數據集先用了fit_transform()函數,然後對測試數據集使用了transform()函數。

一 查看函數API及參數含義

1.fit_transform()函數

在這裏插入圖片描述fit_transform():擬合數據,然後轉化爲標準形式

2.transform()函數

在這裏插入圖片描述transform():通過找中心和縮放等實現標準化

二 辨析兩個函數之間的差別

  1. fit_transform(X_train)對訓練數據集先擬合fit,找到該訓練數據集的整體指標,如均值、方差、最大值最小值等等(根據具體轉換的目的),然後對該訓練數據集進行轉換transform,從而實現數據的標準化、歸一化等等。
  2. 根據對之前訓練數據集fit的整體指標,對測試數據集使用同樣的均值、方差、最大最小值等指標進行轉換transform(X_test),從而保證X_train、X_test處理方式相同。
  3. 必須先用fit_transform(X_train),之後再transform(X_test)
  4. 如果直接transform(X_train),程序會報錯; 如果fit_transfrom(X_test)後,使用fit_transform(X_test)而不用transform(X_test),雖然也能歸一化,但是兩個結果不是在同一個“標準”下的,具有明顯差異。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章