【发布时间】:2019-09-25 22:07:53
【问题描述】:
sklearn 提供transform() 方法来应用one-hot encoder。
要使用transform()方法,在调用transform()方法之前需要fit_transform(),否则
np.array([[1, 1], [2, 1], [3, 2], [np.nan, 2]])
from sklearn.impute import SimpleImputer
my_imputer = SimpleImputer()
my_imputer.transform(df)
出现错误
NotFittedError:此 SimpleImputer 实例尚未安装。称呼 在使用此方法之前,“适合”适当的参数。
在transform()之前调用fit_transform()
my_imputer.fit_transform(df)
my_imputer.transform(df)
修正这个错误。
问题是,为什么transform() 需要fit_transform()?
【问题讨论】:
-
如果您只调用
fit_transform,则根本不需要调用transform。fit_transform首先拟合数据,然后对其进行转换。或者您可以先致电my_imputer.fit(df)和my_imputer.transform(df)。两者都是一样的。 -
基本上,你需要先拟合数据,然后再进行转换
-
实际上 transform_fit 包含拟合和转换两个步骤,或者您可以说填充缺失值。对于您的问题,为什么我们首先需要转换,因为它是一种训练对数据的估算并推断平均值或中位数......以填补缺失值
标签: python scikit-learn