Scikit-learn:使用使用缩放数据训练的模型预测新的原始和未缩放实例

jc1*_*012 4 python machine-learning scikit-learn

我是Python的scikit-learn库的新手.截至目前,我已经使用图书馆制作了不同的分类器模型,这一直在顺利进行.由于数据中的单位不同(我从不同的传感器获得了相应类别标记的数据),我选择使用StandardScale模块来扩展功能.

得到的不同机器学习分类器的准确度得分很好.但是,当我尝试使用模型来预测传感器值的原始实例(意味着未缩放)时,模型会输出错误的分类.

由于对训练数据进行了扩展,是否真的会出现这种情况?如果是这样,是否有一种简单的方法来扩展原始值?我想使用joblib来使用模型持久性,如果有办法使它尽可能模块化,我将不胜感激.这意味着,每次训练数据发生变化时,不记录每个特征的平均值和标准变量.

非常感谢你!

lej*_*lot 6

由于对训练数据进行了扩展,是否真的会出现这种情况?

是的,这是预期的行为.您在缩放数据上训练模型,因此它只适用于缩放数据.

如果是这样,是否有一种简单的方法来扩展原始值?

是的,只需保存您的缩放器.

# Training
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
...
# do some training, probably save classifier, and save scaler too!
Run Code Online (Sandbox Code Playgroud)

然后

# Testing
# load scaler
scaled_instances = scaler.transform(raw_instances)
Run Code Online (Sandbox Code Playgroud)

这意味着,每次训练数据发生变化时,不记录每个特征的平均值和标准变量

这正是你必须要做的事情,虽然不是手工(因为这是缩放器计算的),但实际上"在幕后"这就是发生的事情 - 你必须为每个特征存储平均值/标准.