Standardization/Normalization 中的测试数据 Python

Standardization/Normalization test data in Python

我正在做 sklearn 作业,我不明白为什么要用训练均值和 sd 对测试数据进行标准化和归一化。我如何在 Python 中实现它? 这是我对火车数据的实现:

digits = sklearn.datasets.load_digits()
X= digits.data
Y= digits.target
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3,train_size=0.7)
std_scale = preprocessing.StandardScaler().fit(X_train)
X_train_std = std_scale.transform(X_train)
#X_test_std=??

对于火车我认为是正确的,但是对于考试呢?

为什么?

因为您的 classifier/regressor 将接受这些标准化价值观的培训。您不想使用经过训练的-classifier 来预测具有其他统计信息的数据。

如何:

std_scale = preprocessing.StandardScaler().fit(X_train)
X_train_std = std_scale.transform(X_train)
X_test_std  = std_scale.transform(X_test)

一次适配,想变就变。这是基于 class 的 StandardScaler (which you already had chosen) compared to scale 的优点,它不包含应用转换所需的信息(基于 这些 期间获得的统计数据适合) 稍后。