【发布时间】:2015-11-21 01:54:19
【问题描述】:
我有一个训练有素的 RandomForestRegressor 模型,我想将其保存到文件中以供重复使用。我按照 scikit-learn 持久性页面上的说明进行操作,并且可以保存经过训练的模型。问题是我似乎无法重复使用它,因为 scikit-learn 无法识别它是经过训练的。
model = RandomForestRegressor(n_estimators=100, max_features='sqrt', max_depth=12, n_jobs=24)
model.fit(training_input,training_target_values)
joblib.dump(model, './trained_model/tree.pkl')
但是当我尝试重新使用模型时:
model = joblib.load('./trained_model/tree.pkl')
prediction = np.array(model.predict(patient_arr))
我得到错误:
文件“/usr/local/lib/python2.7/dist-packages/sklearn/ensemble/forest.py”,第 614 行,在预测中 check_is_fitted(自我,'n_outputs_') 文件“/usr/local/lib/python2.7/dist-packages/sklearn/utils/validation.py”,第 627 行,在 check_is_fitted raise NotFittedError(msg % {'name': type(estimator).name}) sklearn.utils.validation.NotFittedError:此 RandomForestRegressor 实例尚未安装。在使用此方法之前,使用适当的参数调用“fit”。
我也试过了:
trained_model = model.fit(training_input,training_target_values)
joblib.dump(trained_model, './trained_model/tree.pkl')
结果相同。
【问题讨论】:
-
帖子的重点是模型拟合没有错误,但是如果没有上面列出的拟合错误,保存的模型就无法运行。当已经发布的代码清楚地表明模型实际上是合适的时,该错误明确表示该模型不合适。相关代码已经贴出来了。
标签: python random-forest