在Python中进行标准化/归一化测试数据

8
我正在做一个sklearn的作业,但我不明白为什么要用训练数据的平均值和标准差来标准化和归一化测试数据。我该如何在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=??

关于火车,我认为是正确的,但是关于测试呢?
1个回答

16

为什么?

因为你的分类器/回归器将会被训练在这些标准化的数值上。你不想用训练过的分类器来预测其他数据统计的数据。

如何:

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

只需要适配一次,就能转换你需要转换的任何内容。这就是基于类的StandardScaler(您已经选择了)相对于scale的优势。后者不保存应用变换所需的信息(基于在拟合期间获得的这些统计数据),而无法在以后的时间里进行转换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接