【问题标题】:Trainable sklearn StandardScaler for R用于 R 的可训练 sklearn StandardScaler
【发布时间】: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),所以我想有一个简单的解决方案,我只是找不到。

【问题讨论】:

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


    【解决方案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 使用正确的参数就可以了
    猜你喜欢
    • 2020-03-27
    • 2014-03-02
    • 2022-01-12
    • 2019-02-17
    • 2020-07-16
    • 2019-06-02
    • 2018-08-14
    • 2021-06-28
    • 2020-09-01
    相关资源
    最近更新 更多