我有一个这样定义的模型:
rng = 42
model = Pipeline([
('scaler', RobustScaler()),
('feature', SelectKBest(k=42)),
('model', SGDClassifier(loss='modified_huber', shuffle=True, random_state=rng))
])
当我使用完全相同的输入在两个单独的程序执行(一个是临时的,另一个是 cron 作业)中进行训练和预测时,我会得到不同的模型权重,从而得到预测结果。
我注意到“铰链”损失是唯一具有完全相同权重的可重现模型。其他损失函数阻止它们被重现的原因是什么?
我已经检查并仔细检查输入是否相同,并使用其他损失函数进行验证。
好的,我已经找到了。 X 数据集之间存在微小差异。 IE。我有 12.799 与 12.8 之类的值,但只有少数 (<10). I didn't think this would have such a large domino effect on the resulting models.
将所有数据四舍五入到小数点后两位会产生完全相同的模型。