[轉(zhuǎn)載]fit_transform,fit,transform區(qū)別和作用詳解

fit和transform沒有任何關(guān)系,僅僅是數(shù)據(jù)處理的兩個(gè)不同環(huán)節(jié),之所以出來fit_transform這個(gè)函數(shù)名,僅僅是為了寫代碼方便,會(huì)高效一點(diǎn)。

sklearn里的封裝好的各種算法使用前都要fit,fit相對(duì)于整個(gè)代碼而言,為后續(xù)API服務(wù)。fit之后,然后調(diào)用各種API方法,transform只是其中一個(gè)API方法,所以當(dāng)你調(diào)用transform之外的方法,也必須要先fit。

fit原義指的是安裝、使適合的意思,其實(shí)有點(diǎn)train的含義,但是和train不同的是,它并不是一個(gè)訓(xùn)練的過程,而是一個(gè)適配的過程,過程都是確定的,最后得到一個(gè)可用于轉(zhuǎn)換的有價(jià)值的信息。

fit,transform,fit_transform常用情況分為兩大類

  1. 數(shù)據(jù)預(yù)處理中方法
    fit(): Method calculates the parameters μ and σ and saves them as internal objects.
    解釋:簡(jiǎn)單來說,就是求得訓(xùn)練集X的均值,方差,最大值,最小值,這些訓(xùn)練集X固有的屬性。

transform(): Method using these calculated parameters apply the transformation to a particular dataset.
解釋:在fit的基礎(chǔ)上,進(jìn)行標(biāo)準(zhǔn)化,降維,歸一化等操作(看具體用的是哪個(gè)工具,如PCA,StandardScaler等)。

fit_transform(): joins the fit() and transform() method for transformation of dataset.
解釋:fit_transform是fit和transform的組合,既包括了訓(xùn)練又包含了轉(zhuǎn)換。
transform()和fit_transform()二者的功能都是對(duì)數(shù)據(jù)進(jìn)行某種統(tǒng)一處理(比如標(biāo)準(zhǔn)化~N(0,1),將數(shù)據(jù)縮放(映射)到某個(gè)固定區(qū)間,歸一化,正則化等)

fit_transform(trainData)對(duì)部分?jǐn)?shù)據(jù)先擬合fit,找到該part的整體指標(biāo),如均值、方差、最大值最小值等等(根據(jù)具體轉(zhuǎn)換的目的),然后對(duì)該trainData進(jìn)行轉(zhuǎn)換transform,從而實(shí)現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化、歸一化等等。

根據(jù)對(duì)之前部分trainData進(jìn)行fit的整體指標(biāo),對(duì)剩余的數(shù)據(jù)(testData)使用同樣的均值、方差、最大最小值等指標(biāo)進(jìn)行轉(zhuǎn)換transform(testData),從而保證train、test處理方式相同。所以,一般都是這么用:

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_tranform(X_train)
sc.tranform(X_test)
1
2
3
4

  1. 各種算法的fit,transform方法
    舉兩個(gè)例子:
  2. CountVectorizer舉例,sklearn的CountVectorizer庫(kù)是根據(jù)輸入數(shù)據(jù)獲取詞頻矩陣(稀疏矩陣)
    fit(raw_documents) :根據(jù)CountVectorizer參數(shù)規(guī)則進(jìn)行操作,比如濾除停用詞等,擬合原始數(shù)據(jù),生成文檔中有價(jià)值的詞匯表;

transform(raw_documents):使用符合fit的詞匯表或提供給構(gòu)造函數(shù)的詞匯表,從原始文本文檔中提取詞頻,轉(zhuǎn)換成詞頻矩陣。

fit_transform(raw_documents, y=None):學(xué)習(xí)詞匯詞典并返回術(shù)語(yǔ) - 文檔矩陣(稀疏矩陣)。

  1. TfidfTransformer舉例,TF-IDF(Term frequency * Inverse Doc Frequency)詞權(quán)重
    在較低的文本語(yǔ)料庫(kù)中,一些詞非常常見(例如,英文中的“the”,“a”,“is”),因此很少帶有文檔實(shí)際內(nèi)容的有用信息。如果我們將單純的計(jì)數(shù)數(shù)據(jù)直接喂給分類器,那些頻繁出現(xiàn)的詞會(huì)掩蓋那些很少出現(xiàn)但是更有意義的詞的頻率。

為了重新計(jì)算特征的計(jì)數(shù)權(quán)重,以便轉(zhuǎn)化為適合分類器使用的浮點(diǎn)值,通常都會(huì)進(jìn)行tf-idf轉(zhuǎn)換。詞重要性度量一般使用文本挖掘的啟發(fā)式方法:TF-IDF。IDF,逆向文件頻率(inverse document frequency)是一個(gè)詞語(yǔ)普遍重要性的度量(不同詞重要性的度量)。

fit(raw_documents, y=None):根據(jù)訓(xùn)練集生成詞典和逆文檔詞頻 由fit方法計(jì)算的每個(gè)特征的權(quán)重存儲(chǔ)在model的idf_屬性中。

transform(raw_documents, copy=True):使用fit(或fit_transform)學(xué)習(xí)的詞匯和文檔頻率(df),將文檔轉(zhuǎn)換為文檔 - 詞矩陣。返回稀疏矩陣,[n_samples, n_features],即,Tf-idf加權(quán)文檔矩陣(Tf-idf-weighted document-term matrix)。

總結(jié):
上述第一類和第二類等價(jià)。算法中的fit方法的應(yīng)用等價(jià)于第一類的fit,只不過產(chǎn)生的結(jié)果意義不同(不是均值等統(tǒng)計(jì)意義,而是根據(jù)算法本身擬合獲取不同信息以備后用),transform根據(jù)fit的結(jié)果轉(zhuǎn)換成目標(biāo)形式,具體需深究代碼實(shí)現(xiàn)。

Note:
必須先用fit_transform(trainData),之后再transform(testData)
如果直接transform(testData),程序會(huì)報(bào)錯(cuò)
如果fit_transfrom(trainData)后,使用fit_transform(testData)而不transform(testData),雖然也能歸一化,但是兩個(gè)結(jié)果不是在同一個(gè)“標(biāo)準(zhǔn)”下的,具有明顯差異。(一定要避免這種情況)
附: 另一個(gè)角度理解fit和transform
fit_transform是fit和transform的結(jié)合,所以只需要了解fit和transform。

transform方法主要用來對(duì)特征進(jìn)行轉(zhuǎn)換。

從可利用信息的角度來說,轉(zhuǎn)換分為無信息轉(zhuǎn)換和有信息轉(zhuǎn)換。

無信息轉(zhuǎn)換是指不利用任何其他信息進(jìn)行轉(zhuǎn)換,比如指數(shù)、對(duì)數(shù)函數(shù)轉(zhuǎn)換等。
有信息轉(zhuǎn)換從是否利用目標(biāo)值向量又可分為無監(jiān)督轉(zhuǎn)換和有監(jiān)督轉(zhuǎn)換。
無監(jiān)督轉(zhuǎn)換指只利用特征的統(tǒng)計(jì)信息的轉(zhuǎn)換,統(tǒng)計(jì)信息包括均值、標(biāo)準(zhǔn)差、邊界等等,比如標(biāo)準(zhǔn)化、PCA法降維等。
有監(jiān)督轉(zhuǎn)換指既利用了特征信息又利用了目標(biāo)值信息的轉(zhuǎn)換,比如通過模型選擇特征、LDA法降維等。
通過總結(jié)常用的轉(zhuǎn)換類,我們得到下表:

所以,只有有信息的轉(zhuǎn)換類的fit方法才實(shí)際有用,顯然fit方法的主要工作是獲取特征和目標(biāo)值有價(jià)值的信息,在這點(diǎn)上,fit方法和模型訓(xùn)練時(shí)的fit方法就能夠聯(lián)系在一起了:**都是通過分析特征和目標(biāo)值,提取有價(jià)值的信息。對(duì)于轉(zhuǎn)換類來說是某些統(tǒng)計(jì)量;對(duì)于模型來說可能是特征的權(quán)值系數(shù)等。

另外,只有有監(jiān)督的轉(zhuǎn)換類的fit和transform方法才需要特征和目標(biāo)值兩個(gè)參數(shù),即有監(jiān)督學(xué)習(xí)的算法fit(x,y)傳兩個(gè)參數(shù)。
無監(jiān)督學(xué)習(xí)的算法是fit(x),即傳一個(gè)參數(shù),比如降維、特征提取、標(biāo)準(zhǔn)化。
fit方法無用不代表其沒實(shí)現(xiàn),而是除合法性校驗(yàn)以外,其并沒有對(duì)特征和目標(biāo)值進(jìn)行任何處理。
————————————————
版權(quán)聲明:本文為CSDN博主「堂姐在這兒?!沟脑瓌?chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_38278334/java/article/details/82971752

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,250評(píng)論 6 530
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 97,923評(píng)論 3 413
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,041評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,475評(píng)論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,253評(píng)論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,801評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,882評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,023評(píng)論 0 285
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,530評(píng)論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,494評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,639評(píng)論 1 366
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,177評(píng)論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,890評(píng)論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,289評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,552評(píng)論 1 281
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,242評(píng)論 3 389
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,626評(píng)論 2 370