【问题标题】:why is fit_transform() not applied to test sets?为什么 fit_transform() 不适用于测试集?
【发布时间】:2021-04-17 12:04:40
【问题描述】:
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train[:, 3:] = sc.fit_transform(X_train[:, 3:])
X_test[:, 3:] = sc.transform(X_test[:, 3:])

在上面的代码中,为什么 fit_transform() 没有应用于测试集,为什么只应用于训练集?

【问题讨论】:

标签: python scikit-learn


【解决方案1】:

我们的想法是,您的缩放值仅考虑 X_train,因为它是您训练模型所必须的唯一数据。测试数据仅用于在您将模型应用于现实生活时进行模拟。

如您所知,StandarScaler 依赖于数据,因此训练数据和测试数据之间的缩放比例会有所不同。你拟合 X_train 所做的就是所有的测试数据都将按照你在训练集上获得的参数进行转换。

清晰的例子:

现在假设您只有 1 个样本测试。你适合和转换这个简单的测试数据吗? (只有一个样本很难)。 答案是否定的。您可以使用 X_train 的参数来缩放这个唯一值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2016-01-06
    相关资源
    最近更新 更多