使用 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如何做
用于 R 的可训练 sklearn StandardScaler
sklearn.preprocessing中standardscaler和Normalizer之间的区别