用于 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 的随机森林分类器中将训练模型用于另一个数据集?