如何使用StandardScaler正确缩放训练,验证和测试集?

时间:2019-11-12 16:54:52

标签: python machine-learning scikit-learn

有些文章说,在只有训练集和测试集的情况下,首先,我们需要使用fit_transform()缩放训练集,然后仅对测试集使用transform(),以防止数据泄漏。

就我而言,我还设置了验证。

我认为下面的这些代码之一可以使用,但我不能完全依靠它们。任何帮助将不胜感激,谢谢!

1)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size = 2/7)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_val = scaler.transform(X_val)
X_test = scaler.transform(X_test)

2)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)

X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size = 2/7)
X_test = scaler.transform(X_test)

1 个答案:

答案 0 :(得分:0)

通常,您将要使用选项1代码。使用拟合然后对火车数据进行变换的原因是  a)拟合将计算火车集合的均值,变量等,然后尝试将模型拟合到数据  b)发布哪个转换将根据拟合模型转换数据。

如果您再次对测试集使用拟合,这将为模型增加偏差。