保存的 sklearn 模型的预测与训练过的模型不同

Posted

技术标签:

【中文标题】保存的 sklearn 模型的预测与训练过的模型不同【英文标题】:Saved sklearn model predicts differently than a trained one 【发布时间】:2021-02-08 20:00:09 【问题描述】:

我在 sklearn 中训练了简单的 RandomForestRegressor:

from sklearn.ensemble import RandomForestRegressor

ran_for = RandomForestRegressor(n_estimators = 300, min_samples_split = 2, 
   random_state = RND, n_jobs = 20, max_depth = 8, verbose = 2)
ran_for.fit(X_c, y_c)

然后我通过 joblib 保存模型:

from joblib import dump

dump(ran_for, '/content/random_forest_regressor.joblib')

之后我重新启动了我的内核,并加载了之前保存的模型:

from joblib import load

my_model = load('/content/random_forest_regressor.joblib')

我在同一数据集的样本上测试了保存的模型:

pred = my_model.predict(X_test)

看起来我保存的模型完全错误,这是预测唯一值和 baplot:

print(pd.Series(pred).unique())
plt.figure(figsize = (10, 10))
pd.Series(pred).hist()
plt.show()

[892.52446705 599.29566532 539.45592338 903.74387156 601.12144516]

predictions barplot

我做错了吗?

我在 Google Colab 中运行它

编辑:正如 cmets 中所建议的,这是保存前的模型预测:

pred = ran_for.predict(X_test)
print(pred[:20])
plt.figure(figsize = (10, 10))
pd.Series(pred).hist(bins = 1000).set_xlim([0, 5000])
plt.show()

Output 在这里您可以看到,该模型正确地预测了值。

【问题讨论】:

您需要在保存和重新加载之前向我们展示预测,以证明这实际上是不同的。 谢谢,我已经编辑了问题 【参考方案1】:

原来是 Google Colab 的问题。在我的本地机器上尝试过 - 工作正常。

【讨论】:

以上是关于保存的 sklearn 模型的预测与训练过的模型不同的主要内容,如果未能解决你的问题,请参考以下文章

sklearn训练模型的保存与加载

使用保存的 sklearn 模型进行预测

sklearn如何使用保存的模型来预测新数据

如何保存sklearn训练得到的模型?看这一篇就够了

sklearn:应用相同的缩放来训练和预测管道

加载和预测新数据 sklearn