保存sklearn交叉验证对象

2024-10-02 10:30:38 发布

您现在位置:Python中文网/ 问答频道 /正文

按照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

如何保存完整的对象?在


Tags: 对象模型falsemodeljobs教程sklearn交叉
3条回答

如果您使用的是python2, 尝试:

import dill  

因此可以对lambda函数进行pickle。。。。在

一个可能的原因可能是多线程问题,您可以参考thisstackoverflow答案。在

另外,是否可以不通过joblib而是通过pickle(甚至不是cPickle,这是更严格的限制)之类的更基本的方法来转储对象吗?在

我知道这是一个老问题,但对于有相同或相似问题的人来说,这可能是有用的。在

我不确定具体的错误消息,但我使用pickle成功地将整个GridSearchCV对象保存在我自己的项目中:

import pickle
gs = GridSearchCV(some parameters) #create the gridsearch object
gs.fit(X, y) # fit the model
with open('file_name', 'wb') as f:
    pickle.dump(gs, f) # save the object to a file

然后你可以使用

^{pr2}$

读取文件,从而能够再次使用该对象。在

相关问题 更多 >

    热门问题