sklearn提供了transform()
方法来应用一键编码器。
要使用transform()
方法,在调用fit_transform()
方法之前需要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实例尚未安装。呼叫 使用此方法之前,请先“匹配”适当的参数。
在fit_transform()
之前呼叫transform()
my_imputer.fit_transform(df)
my_imputer.transform(df)
解决此错误。
问题是,transform()
为什么需要fit_transform()
?
答案 0 :(得分:0)
在fit()
期间,推动者了解数据的平均值,中位数等,然后将其应用于transform()
期间的缺失值。
fit_transform()
只是组合这两种方法的简写。所以本质上:
fit(X, y)
:-了解所提供数据的必需方面,并返回具有学习参数的新对象。它不会以任何方式更改提供的数据。
transform()
:-实际上将提供的数据转换为新格式。
fit_transform(df)
不需要在转换之前被调用。只需要调用fit()
。通常,您描述的序列是通过训练和测试数据拆分完成的。像这样:
# Combining the learning of parameters from training data and transforming into a single step.
X_train_new = my_imputer.fit_transform(X_train)
# We dont want to learn about test data, only change it according to previously learnt information
X_test_new = my_imputer.transform(X_test)
上面的代码段可以分为:
# It learns about the data and does nothing else
my_imputer.fit(X_train)
# Calling transform to apply the learnt information on supplied data
X_train_new = my_imputer.transform(X_train)
X_test_new = my_imputer.transform(X_test)
答案 1 :(得分:0)
实际上,transform_fit 包含拟合和转换两个步骤,或者您可以说填充缺失值。
对于你的问题,为什么我们需要先进行转换,因为它是一种训练数据的插补并推导出均值或中位数……以填补缺失值