适用于R的可训练sklearn StandardScaler

Boe*_*ern 5 python r machine-learning normalization scikit-learn

是否有类似的东西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)
Run Code Online (Sandbox Code Playgroud)

因为我非常确定这是正确的方法(避免了信息从测试泄漏到训练集中),所以我想有一个我找不到的简单解决方案。

sac*_*cuL 8

我相信其中的scale功能R可以满足您的需求。以您的示例为例,

X_train_scaled = scale(X_train)
Run Code Online (Sandbox Code Playgroud)

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

X_test_scaled = scale(X_test, center=attr(X_train_scaled, "scaled:center"), 
                              scale=attr(X_train_scaled, "scaled:scale"))
Run Code Online (Sandbox Code Playgroud)

这将从您发布的示例中获得准确的结果作为转换