可训练的sklearn StandardScaler for R

时间:2018-03-13 16:11:10

标签: python r machine-learning scikit-learn normalization

R中是否存在类似的内容,允许将StandardScaler(导致均值= 0和标准差= 1个特征)拟合到训练数据中,并使用该缩放器模型转换测试数据? scale没有提供基于训练数据的均值和标准偏差来转换测试数据的方法。

Python的片段:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)

X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)

由于我很确定这是正确的方法(avoiding the leak of information from the test to the training set),我想有一个简单的解决方案,我无法找到。

1 个答案:

答案 0 :(得分:7)

我相信R中的scale功能可以满足您的需求。对于你的例子,那只是

X_train_scaled = scale(X_train)

然后,您可以使用缩放的X_train中的attr(属性)将缩放训练集中的均值和sd应用于测试集:

X_test_scaled = scale(X_test, center=attr(X_train_scaled, "scaled:center"), 
                              scale=attr(X_train_scaled, "scaled:scale"))

这可以获得您发布的example转换的确切结果