http://www.javashuo.com/article/p-byhobizo-dc.htmlhtml
寫在前面
fit和transform沒有任何關係,僅僅是數據處理的兩個不一樣環節,之因此出來fit_transform這個函數名,僅僅是爲了寫代碼方便,會高效一點。算法
sklearn裏的封裝好的各類算法使用前都要fit,fit相對於整個代碼而言,爲後續API服務。fit以後,而後調用各類API方法,transform只是其中一個API方法,因此當你調用transform以外的方法,也必需要先fit。app
fit原義指的是安裝、使適合的意思,其實有點train的含義,可是和train不一樣的是,它並非一個訓練的過程,而是一個適配的過程,過程都是肯定的,最後獲得一個可用於轉換的有價值的信息。函數
fit,transform,fit_transform經常使用狀況分爲兩大類工具
#(fit(x,y)傳兩個參數的是有監督學習的算法,fit(x)傳一個參數的是無監督學習的算法,好比降維、特徵提取、標準化)
1. 數據預處理中方法
fit(): Method calculates the parameters μ and σ and saves them as internal objects.
--解釋:簡單來講,就是求得訓練集X的均值,方差,最大值,最小值,這些訓練集X固有的屬性。學習
transform(): Method using these calculated parameters apply the transformation to a particular dataset.
--解釋:在fit的基礎上,進行標準化,降維,歸一化等操做(看具體用的是哪一個工具,如PCA,StandardScaler等)。測試
fit_transform(): joins the fit() and transform() method for transformation of dataset.
--解釋:fit_transform是fit和transform的組合,既包括了訓練又包含了轉換。
transform()和fit_transform()兩者的功能都是對數據進行某種統一處理(好比標準化~N(0,1),將數據縮放(映射)到某個固定區間,歸一化,正則化等).net
fit_transform(trainData)對部分數據先擬合fit,找到該part的總體指標,如均值、方差、最大值最小值等等(根據具體轉換的目的),而後對該trainData進行轉換transform,從而實現數據的標準化、歸一化等等。orm
根據對以前部分trainData進行fit的總體指標,對剩餘的數據(testData)使用一樣的均值、方差、最大最小值等指標進行轉換transform(testData),從而保證train、test處理方式相同
htm