按照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)
这将成功:
^{pr2}$这将失败:
joblib.dump(cvgridsrch, 'C:\\Users\\Desktop\\DMA\\cvgridsrch.pkl', compress=9)
有错误:
PicklingError: Can't pickle <type 'instancemethod'>: it's not found as __builtin__.instancemethod
如何保存完整的对象?在
如果您使用的是python2, 尝试:
因此可以对lambda函数进行pickle。。。。在
一个可能的原因可能是多线程问题,您可以参考thisstackoverflow答案。在
另外,是否可以不通过joblib而是通过pickle(甚至不是cPickle,这是更严格的限制)之类的更基本的方法来转储对象吗?在
我知道这是一个老问题,但对于有相同或相似问题的人来说,这可能是有用的。在
我不确定具体的错误消息,但我使用pickle成功地将整个GridSearchCV对象保存在我自己的项目中:
然后你可以使用
^{pr2}$读取文件,从而能够再次使用该对象。在
相关问题 更多 >
编程相关推荐