在sklearn教程之后,我尝试保存一个通过sklearn创建但未成功的对象。看起来问题出在交叉验证对象上,因为我可以保存实际的(最终)模型。
鉴于:
rf_model = RandomForestRegressor(n_estimators=1000, n_jobs=4, compute_importances = False)
cvgridsrch = GridSearchCV(estimator=rf_model, param_grid=parameters,n_jobs=4)
cvgridsrch.fit(X,y)
这将成功:
joblib.dump(cvgridsrch.best_estimator_, 'C:\\Users\\Desktop\\DMA\\cvgridsrch.pkl', compress=9)
这将失败:
joblib.dump(cvgridsrch, 'C:\\Users\\Desktop\\DMA\\cvgridsrch.pkl', compress=9)
错误:
PicklingError: Can't pickle <type 'instancemethod'>: it's not found as __builtin__.instancemethod
如何保存完整对象?
最佳答案
如果您使用的是Python 2,
尝试:
import dill
这样就可以腌制lambda函数。