如何解决如何在 PySpark 中使用 StandardScaler 标准化测试数据集?
我有如下训练和测试数据集:
x_train:
inputs
[2,5,10]
[4,6,12]
...
x_test:
inputs
[7,8,14]
[5,7]
...
输入列是一个向量,其中包含在将 VectorAssembler 类应用于 3 个单独的列之后的模型特征。
当我尝试使用如下所示的 StandardScaler 转换测试数据时,我收到一条错误消息,指出它没有转换方法:
from pyspark.ml.feature import StandardScaler
scaler = StandardScaler(inputCol="inputs",outputCol="scaled_features")
scaledTrainDF = scaler.fit(x_train).transform(x_train)
scaledTestDF = scaler.transform(x_test)
我被告知我应该只在训练数据上拟合一次标准缩放器,并使用这些参数来转换测试集,所以这样做是不准确的:
scaledTestDF = scaler.fit(x_test).transform(x_test)
那么我该如何处理上面提到的错误?
解决方法
这是使用缩放器的正确语法。您需要在拟合模型上调用变换,而不是在缩放器本身上调用。
from pyspark.ml.feature import StandardScaler
scaler = StandardScaler(inputCol="inputs",outputCol="scaled_features")
scaler_model = scaler.fit(x_train)
scaledTrainDF = scaler_model.transform(x_train)
scaledTestDF = scaler_model.transform(x_test)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。