Python: sklearn庫中資料預先處理函數fit_transform()和transform()的區別

來源:互聯網
上載者:User

敲《Python機器學習及實踐》上的code的時候,對於資料預先處理中涉及到的fit_transform()函數和transform()函數之間的區別很模糊,查閱了很多資料,這裡整理一下:


涉及到這兩個函數的代碼如下:

# 從sklearn.preprocessing匯入StandardScalerfrom sklearn.preprocessing import StandardScaler# 標準化資料,保證每個維度特徵資料方差為1,均值為0,使得預測結果不會被某些維度過大的特徵值而主導ss = StandardScaler()# fit_transform()先擬合資料,再標準化X_train = ss.fit_transform(X_train)# transform()資料標準化X_test = ss.transform(X_test)

我們先來看一下這兩個函數的API以及參數含義:

1、fit_transform()函數


即fit_transform()的作用就是先擬合資料,然後轉化它將其轉化為標準形式

2、transform()函數


即tranform()的作用是通過找中心和縮放等實現標準化


到了這裡,我們似乎知道了兩者的一些差別,就像名字上的不同,前者多了一個fit資料的步驟,那為什麼在標準化資料的時候不使用fit_transform()函數呢。

原因如下:

為了資料歸一化(使特徵資料方差為1,均值為0),我們需要計算特徵資料的均值μ和方差σ^2,再使用下面的公式進行歸一化:


我們在訓練集上調用fit_transform(),其實找到了均值μ和方差σ^2,即我們已經找到了轉換規則,我們把這個規則利用在訓練集上,同樣,我們可以直接將其運用到測試集上(甚至交叉驗證集),所以在測試集上的處理,我們只需要標準化資料而不需要再次擬合資料。用一幅圖展示如下:


(圖片來源:點擊開啟連結)



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.