【问题标题】:Using fit_transform() and transform()使用 fit_transform() 和 transform()
【发布时间】:2022-08-20 01:13:07
【问题描述】:
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

我所知道的是fit() 方法计算特征的均值和标准差,然后transform() 方法使用它们将特征转换为新的缩放特征。 fit_transform() 只不过是在一行中调用 fit()transform() 方法。

但是这里为什么我们只为训练数据而不是测试数据调用fit()

这是否意味着我们正在使用训练数据的均值和标准差来转换我们的测试数据??

标签: python machine-learning scikit-learn data-science data-analysis


【解决方案1】:

fit 计算用于以后缩放的平均值和标准差,注意这只是一个没有缩放的计算。

transform 使用之前计算的平均值和标准差来缩放数据(从所有值中减去平均值,然后除以标准差)。

fit_transform 同时做这两件事。因此,您只需 1 行代码即可完成。

对于X_train 数据集,我们使用fit_transform,因为我们需要计算均值和标准差,然后使用它来缩放X_train 数据集。对于X_test 数据集,由于我们已经有了均值和标准差,我们只做转换部分。

编辑X_test 数据应该完全看不见未知(即,没有从中提取任何信息),因此我们只能从X_train 中获取信息。我们应用派生均值和标准差(来自X_train)来转换X_test 的原因是对y_testy_pred 进行相同的“苹果对苹果”比较。

顺便说一句,如果训练/测试数据被正确分割而没有偏差,并且数据足够大,那么两个数据集对总体均值和标准差的近似值将相同。

【讨论】:

  • 但是平均值和标准偏差将用于 X_train 中的值而不是 X_test,这两个集合的平均值和标准偏差不应该不同
  • X_test 数据应该是看不见和未知的,所以我们只能从 X_train 中获取信息。出于苹果对苹果比较的目的,我们应用相同的均值和标准差来变换 X_test。如果训练/测试数据在没有偏差的情况下正确分割,它们应该具有与总体均值和标准差相同的近似值
猜你喜欢
  • 2020-11-05
  • 2021-03-11
  • 2020-06-23
  • 2021-02-18
  • 2019-01-30
  • 2016-08-25
  • 2014-07-13
  • 2016-12-06
  • 1970-01-01
相关资源
最近更新 更多