1. 程式人生 > >sklearn中, fit,fit_transform,transform

sklearn中, fit,fit_transform,transform

scikit-learn提供了一系列轉換庫,他們可以清洗,降維,提取特徵等。

在資料轉換中有三個很重要的方法,fit,fit_transform,transform

ss=StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)
初學時候好奇為何,訓練樣本用fit_transform,而測試樣本用transform?

仔細閱讀官方文件發現,fit方法是用於從一個訓練集中學習模型引數,其中就包括了歸一化時用到的均值,標準偏差。transform方法就是用於將模型用於位置資料,fit_transform就很高效的將模型訓練和轉化合併到一起,訓練樣本先做fit,得到mean,standard deviation,然後將這些引數用於transform(歸一化訓練資料),使得到的訓練資料是歸一化的,而測試資料只需要在原先得到的mean,std上來做歸一化就行了,所以用transform就行了。

StandardScaler對矩陣作歸一化處理,變換後的矩陣各特徵均值為0,方差為1

網上抄來抄去都是一個意思,

fit_transform是fit和transform的組合。

我們知道fit(x,y)在新手入門的例子中比較多,但是這裡的fit_transform(x)的括號中只有一個引數,這是為什麼呢?

fit(x,y)傳兩個引數的是有監督學習的演算法,fit(x)傳一個引數的是無監督學習的演算法,比如降維、特徵提取、標準化

然後解釋為什麼出來fit_transform()這個東西,下面是重點:

fit和transform沒有任何關係,之所以出來這麼個函式名,僅僅是為了寫程式碼方便,

所以會發現transform()和fit_transform()的執行結果是一樣的。
執行乳腺癌相關的機器學習程式碼,資料集是程式碼自動從網上下載的。參考https://blog.csdn.net/ljyljyok/article/details/79722089

x_train原來資料
在這裡插入圖片描述

執行transform之後,其實是做了歸一化

在這裡插入圖片描述