python-3.x - 保存的 sklearn 模型的预测与训练过的模型不同
问题描述
我在 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]
我做错了吗?
我在 Google Colab 中运行它
编辑:正如评论中所建议的,这是保存前的模型预测:
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()
输出 在这里您可以看到,该模型正确地预测了值。
解决方案
原来是 Google Colab 的问题。在我的本地机器上尝试过 - 工作正常。
推荐阅读
- python - 如何在Linux上并行执行两个python函数?
- java - JAXB Marshaller 在将对象写入文件之前计算将对象写入文件需要多少空间
- c++ - 如何在继承的构造函数中为基类构造函数传递值
- r - 每天定义起点的时间序列上的移动窗口回归
- python-3.x - 使用 shutil.copy() 时出现 FileNotFoundError
- javascript - 你将如何在 React 中将两个输入值添加到多维数组中?
- python - 如何从文本框中发送多个数据并选择标签(html)到烧瓶服务器
- c - 我想确保我的链表工作
- swift - 是否可以从自定义视图中覆盖视图修饰符?
- vue.js - 下载 SVG 和 PNG 格式的插图,Blob 未定义 - Vue.js2 和 Laravel 8