【问题标题】:How to scale test set based on the mean and std from train set in python?python - 如何根据python中训练集的均值和标准来扩展测试集?
【发布时间】:2021-06-14 11:52:55
【问题描述】:

我阅读了解释“Why feature scaling only to training set?”的答案 " 答案是“使用训练集均值和标准差标准化任何测试集”

因此,我尝试修复我之前的错误操作。但是,我检查了 StandardScaler() 的 official document,它不支持使用给定的均值和标准进行缩放。像这样:

from sklearn.preprocessing import StandardScaler
sc = StandardScaler(mean = train_x.mean(), var_x = train.std())
sc.fit(test_x)

# this code is incorrect, but what is the correct code?

所以,我的问题是如何根据 python 中训练集的均值和标准来扩展测试集。

【问题讨论】:

  • 它将缩放默认值,因为 with_mean 和 with_std 被赋予 True。所以当你通过 test_x 时,它会自动计算平均值和标准,然后处理缩放。你的代码应该是这样的。 sc= StandardScaler() sc.fit(test_x)

标签: python scale normalization standardized


【解决方案1】:

根据官方文档,

with_mean bool, default=True 如果为 True,则在缩放之前将数据居中。 尝试时这不起作用(并且会引发异常) 稀疏矩阵,因为使它们居中需要建立一个密集的矩阵 在常见用例中可能太大而无法放入的矩阵 记忆。

with_std bool, default=True 如果为真,将数据缩放到单位方差 (或等效的单位标准差)。

所以你可以简单地这样做。

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(test_x)

StandardScaler() 仅将 with_mean 和 with_std 作为布尔值,表示它们的值为 True 或 False。

【讨论】:

  • 所以,如果我想使用 train_x 来缩放 test_x,我应该: sc = StandardScaler() sc.fit(train_x) 然后 sc.transform(test_x)
猜你喜欢
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-23
  • 2015-04-10
  • 2023-02-12
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多