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

Posted

技术标签:

【中文标题】使用 sklearn StandardScaler 意外获得不同的标准化数据【英文标题】:Unexpectedly getting different standardized data with sklearn StandardScaler 【发布时间】:2019-10-20 10:21:30 【问题描述】:

我使用 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 相比,对于 26 个特征中的每一个,Scaler2 为相同的数据点给出了不同的值。这种行为正常吗?每行的标准化不是独立发生的吗?我该如何解决这个问题?

最好, 亚尼克

【问题讨论】:

【参考方案1】:

此问题已修复。确保处理特征的顺序保持不变很重要,因为标准化模型似乎没有保存特征的名称。

【讨论】:

以上是关于使用 sklearn StandardScaler 意外获得不同的标准化数据的主要内容,如果未能解决你的问题,请参考以下文章

sklearn.preprocessing.StandardScaler 离线使用 不使用pickle如何做

意外的结果sklearn StandardScaler

用于 R 的可训练 sklearn StandardScaler

sklearn.preprocessing中standardscaler和Normalizer之间的区别

sklearn 笔记:数据归一化(StandardScaler)

sklearn.preprocessing.StandardScaler数据标准化