如何在 PySpark 中使用 StandardScaler 标准化测试数据集?
how do I standardize test dataset using StandardScaler in PySpark?
我有如下训练和测试数据集:
x_train:
inputs
[2,5,10]
[4,6,12]
...
x_test:
inputs
[7,8,14]
[5,5,7]
...
在将 VectorAssembler class 应用到 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)
我有如下训练和测试数据集:
x_train:
inputs
[2,5,10]
[4,6,12]
...
x_test:
inputs
[7,8,14]
[5,5,7]
...
在将 VectorAssembler class 应用到 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)