根据训练集数据学习得到数据集的特征,比如均值、中位数、标准差等等
transform()将fit()学到数据集特征,应用到数据集,比如学习到数据集平均数为6,应用到填充数据中的缺失值
fit_transform() = fit()+transform()即将从数据集中学到的特征(均值、中位数、标准差)应用到数据集中
举例此处以使用均值填充缺失值举例
>>> import numpy as np >>> from sklearn.impute import SimpleImputer # 学习方法(策略) >>> imp_mean = SimpleImputer(missing_values=np.nan, strategy='median') # 学习方法(策略)从下面数据集中进行学习 [[ 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]]) # 学习方法(策略)从实际数据中进行学习,学习到的第1/2/3列中位数 分别是7.0,3.5,6.0 >>> imp_mean_fit.statistics_ array([7. , 3.5, 6. ]) # 将学习到的结果(第1/2/3列中位数 分别是7.0,3.5,6.0)应用到数据集X,原来的np.nan分别被中位数替换 >>> 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. ]]应用
fit()+transform() 以及 fit_transform()只能应用在训练集,一般不能对测试集进行使用,测试集合一般用transfrom(),即只能将训练集提取到特征应用到训练集及测试集。原因是如果fit_transfrom(trainData)后,使用fit_transform(testData)而不transform(testData),虽然也能归一化,但是两个结果不是在同一个“标准”下的,具有明显差异。



