fit_transform和transform的区别
部分轉載
https://blog.csdn.net/weixin_38278334/article/details/82971752
https://www.cnblogs.com/summer-nude/p/7380694.html
寫在前面
fit和transform沒有任何關系,僅僅是數據處理的兩個不同環節,之所以出來fit_transform這個函數名,僅僅是為了寫代碼方便,會高效一點。
sklearn里的封裝好的各種算法使用前都要fit,fit相對于整個代碼而言,為后續API服務。fit之后,然后調用各種API方法,transform只是其中一個API方法,所以當你調用transform之外的方法,也必須要先fit。
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),將數據縮放(映射)到某個固定區間,歸一化,正則化等)
fit_transform(trainData)對部分數據先擬合fit,找到該part的整體指標,如均值、方差、最大值最小值等等(根據具體轉換的目的),然后對該trainData進行轉換transform,從而實現數據的標準化、歸一化等等。
根據對之前部分trainData進行fit的整體指標,對剩余的數據(testData)使用同樣的均值、方差、最大最小值等指標進行轉換transform(testData),從而保證train、test處理方式相同
?
為什么X_train標準化是用fit_transform(),而X_test標準化是用transform()呢?
- fit_transform()干了兩件事:fit找到數據轉換規則,并將數據標準化
- transform:是將數據進行轉換,比如數據的歸一化和標準化,將測試數據按照訓練數據同樣的模型進行轉換,得到特征向量。可以直接把轉換規則拿來用,所以并不需要fit_transform(),否則,兩次標準化后的數據格式(或者說數據參數)就不一樣了
轉載于:https://www.cnblogs.com/xin-qing3/p/11187164.html
總結
以上是生活随笔為你收集整理的fit_transform和transform的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: json - json对象和json字符
- 下一篇: random_state ---summ