Python

时间:2017-12-06 01:46:12

标签: python scikit-learn normalization

我正在做一个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=??

对于火车我认为这是正确的,但是对于测试?

1 个答案:

答案 0 :(得分:7)

为什么?

因为您的分类器/回归器将接受这些标准化值的培训。您不希望使用训练分类器来预测具有其他统计信息的数据。

如何:

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(已经选择)的优势,它不包含应用转换所需的必要信息(基于这些统计信息)在 fit )期间获得。