使用sklearn StandardScaler意外获得不同的标准化数据

时间:2019-06-04 21:16:56

标签: python machine-learning scikit-learn

我使用scikit-learn的standardScaler类在同一数据集上构建的两个缩放器获得了不同的标准化值。

我已经使用Scikit-learn在具有52个功能的训练数据集上构建了StandarScaler对象。我们称它为Scaler1。然后,我使用该缩放器对训练数据集进行标准化,并在标准化数据上学习不同的模型。这导致了具有选定功能的最佳模型(52个中的26个)。为了实现使用该模型的预测器类:(1)我仅抓取了原始(非标准化)数据集中与26个所选要素相对应的列;然后(2)我通过拟合新创建的数据集来创建并保存(使用joblib)新的StandarScaler对象。我们称它为Scaler2。以下是我的实现的简单概述。

scaler = StandardScaler()
scaler.set_params (**parameters)
scaler.fit(data)
joblib.dump(scaler, destination)

与我的预期相反,在尝试对原始数据集进行标准化时,与Scaler1相比,Scaler2为我提供了26个功能中每个特征的相同数据点的不同值。标准化不是针对每一行独立进行吗?我该如何解决这个问题?

最好, 扬尼克

1 个答案:

答案 0 :(得分:0)

此问题已解决。重要的是要确保处理要素的顺序保持不变,因为标准化模型似乎没有保存要素的名称。