如何在scikit-learn中保存随机森林?

5

实际上,有很多关于持久性的问题,但我已经尝试了很多使用picklejoblib.dumps。但是当我用它来保存我的随机森林时,我得到了这个:

ValueError: ("Buffer dtype mismatch, expected 'SIZE_t' but got 'long'", <type 'sklearn.tree._tree.ClassificationCriterion'>, (1, array([10])))

请问有人能告诉我为什么吗?

一些需要审查的代码

forest = RandomForestClassifier()
forest.fit(data[:n_samples], target[:n_samples ])
import cPickle
with open('rf.pkl', 'wb') as f:
    cPickle.dump(forest, f)
with open('rf.pkl', 'rb') as f:
    forest = cPickle.load(f)

或者

from sklearn.externals import joblib
joblib.dump(forest,'rf.pkl') 

from sklearn.externals import joblib
forest = joblib.load('rf.pkl')

请提供一些示例代码。 - elyase
两个解决方案都会出现相同的错误吗? - xgdgsc
2
你是否使用相同的32/64位Python进行保存/加载?https://dev59.com/2WEi5IYBdhLWcg3wsODc - xgdgsc
哦,我忘记了我使用的不是同一位。谢谢! - mrbean
2个回答

7

1
尝试直接导入joblib包:
import joblib

# ...

# save
joblib.dump(rf, "some_path")

# load 
rf2 = joblib.load("some_path")

我已经在这里提供了完整的可运行示例,包括代码和注释here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接