gpt4 book ai didi

python - sklearn.impute SimpleImputer : why does transform() need fit_transform() first?

转载 作者:行者123 更新时间:2023-12-01 07:54:51 28 4
gpt4 key购买 nike

sklearn提供了transform()方法来应用one-hot编码器。

要使用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: This SimpleImputer instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.

transform()之前调用fit_transform()

my_imputer.fit_transform(df)
my_imputer.transform(df)

修复此错误。

问题是,为什么transform()需要fit_transform()

最佳答案

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)

关于python - sklearn.impute SimpleImputer : why does transform() need fit_transform() first?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56036248/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com