用于 R 的可训练 sklearn StandardScaler

Posted

技术标签:

【中文标题】用于 R 的可训练 sklearn StandardScaler【英文标题】:Trainable sklearn StandardScaler for R 【发布时间】:2018-08-21 23:40:04 【问题描述】:

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】:

我相信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 进行转换的确切结果

【讨论】:

我对那个很熟悉。但是如何利用训练集中的 mean 和 sd 的信息来变换测试集呢? 查看我的编辑,我很确定 scale 使用正确的参数就可以了

以上是关于用于 R 的可训练 sklearn StandardScaler的主要内容,如果未能解决你的问题,请参考以下文章

Sklearn PCA:用于训练和测试的组件数量不同

如何在 Sklearn 的随机森林分类器中将训练模型用于另一个数据集?

逻辑回归 sklearn - 训练和应用模型

ROC下的sklearn svm area小于0.5用于训练数据

训练期间的sklearn逻辑回归损失值

如何使用整个训练示例来估计 sklearn RandomForest 中的类概率