scikit_learn中fit()/transform()/fit_transform()区别和联系
函數(shù)功能解釋
fit()?
根據(jù)訓(xùn)練集數(shù)據(jù)學(xué)習(xí)得到數(shù)據(jù)集的特征,比如均值、中位數(shù)、標(biāo)準(zhǔn)差等等
transform()
將fit()學(xué)到數(shù)據(jù)集特征,應(yīng)用到數(shù)據(jù)集,比如學(xué)習(xí)到數(shù)據(jù)集平均數(shù)為6,應(yīng)用到填充數(shù)據(jù)中的缺失值
fit_transform() = fit()+transform()
即將從數(shù)據(jù)集中學(xué)到的特征(均值、中位數(shù)、標(biāo)準(zhǔn)差)應(yīng)用到數(shù)據(jù)集中
舉例
此處以使用均值填充缺失值舉例
>>> import numpy as np >>> from sklearn.impute import SimpleImputer# 學(xué)習(xí)方法(策略) >>> imp_mean = SimpleImputer(missing_values=np.nan, strategy='median') # 學(xué)習(xí)方法(策略)從下面數(shù)據(jù)集中進(jìn)行學(xué)習(xí) [[ 7. 2. 3.][ 4. nan 6.][10. 5. 9.]]>>> imp_mean_fit = imp_mean.fit([[7, 2, 3], [4, np.nan, 6], [10, 5, 9]]) # 學(xué)習(xí)方法(策略)從實(shí)際數(shù)據(jù)中進(jìn)行學(xué)習(xí),學(xué)習(xí)到的第1/2/3列中位數(shù) 分別是7.0,3.5,6.0 >>> imp_mean_fit.statistics_ array([7. , 3.5, 6. ])# 將學(xué)習(xí)到的結(jié)果(第1/2/3列中位數(shù) 分別是7.0,3.5,6.0)應(yīng)用到數(shù)據(jù)集X,原來(lái)的np.nan分別被中位數(shù)替換 >>> X = [[np.nan, 2, 3], [4, np.nan, 6], [10, np.nan, 9]] >>> print(imp_mean_fit.transform(X))[[ 7. 2. 3. ][ 4. 3.5 6. ][10. 3.5 9. ]]應(yīng)用
fit()+transform() 以及 fit_transform()只能應(yīng)用在訓(xùn)練集,一般不能對(duì)測(cè)試集進(jìn)行使用,測(cè)試集合一般用transfrom(),即只能將訓(xùn)練集提取到特征應(yīng)用到訓(xùn)練集及測(cè)試集。原因是如果fit_transfrom(trainData)后,使用fit_transform(testData)而不transform(testData),雖然也能歸一化,但是兩個(gè)結(jié)果不是在同一個(gè)“標(biāo)準(zhǔn)”下的,具有明顯差異。
?
總結(jié)
以上是生活随笔為你收集整理的scikit_learn中fit()/transform()/fit_transform()区别和联系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 中国机器人峰会定档5月23日 潘云鹤等院
- 下一篇: 女大学生坐高铁拒绝补票刁难乘务长 后排乘