sklearn中數據縮放用到的fit_transform()、transform()、fit()方法的區別與聯系


看了一堆搜索排名靠前的中文博客,感覺沒有一個解釋能讓人醍醐灌頂的,故搜索英文網頁並記之。

謝絕轉載。

首先對於數據標准化一般是這么做的:

 

 其中μ是均值, σ是標准差。目的是使數據服從均值為零,標准差為1的標准正態分布,此即標准化(Standardization)。

標准化都是給訓練集數據做的,但在以下情況中也必須做數據標准化,比如,交叉驗證時的測試集,或者是預測前獲得了一組新的樣本。而在對新的數據或測試集進行標准化時,我們所用的是訓練集標准化中的均值μ和標准差σ。

因此,StandardScaler 中的fit()所做的就是計算數據的均值μ和標准差σ,並將他們儲存為一個內部對象的狀態,無返回值。然后,對測試集調用transform()方法,此方法將使用剛剛fit()計算得到的均值μ和標准差σ來對測試集數據進行標准化。

而fit_transform()就是將以上兩步二合一,因為其內部就是先后調用fit()和transform()函數的。

所以我們經常能看到類似這樣的代碼:

1 # Feature Scaling
2 from sklearn.preprocessing import StandardScaler
3 sc = StandardScaler()
4 X_train = sc.fit_transform(X_train)
5 X_test = sc.transform(X_test)

注意這里fit_transform()是用在訓練集上的,也就是說,fit_transform()先計算了訓練集數據的均值μ和標准差σ,並以此對訓練集進行標准化。

 

參考:

https://datascience.stackexchange.com/questions/12321/whats-the-difference-between-fit-and-fit-transform-in-scikit-learn-models

https://www.kaggle.com/questions-and-answers/58368


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM