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)
因为我非常确定这是正确的方法(避免了信息从测试泄漏到训练集中),所以我想有一个我找不到的简单解决方案。
我相信其中的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)
这将从您发布的示例中获得准确的结果作为转换