将python随机林模型保存到文件

use*_*706 21 python machine-learning random-forest scikit-learn

在R中,运行"随机森林"模型后,我可以save.image("***.RData")用来存储模型.之后,我可以加载模型直接进行预测.

你能在python中做类似的事吗?我将模型和预测分成两个文件.在模型文件中:

rf= RandomForestRegressor(n_estimators=250, max_features=9,compute_importances=True)
fit= rf.fit(Predx, Predy)
Run Code Online (Sandbox Code Playgroud)

我试图返回rffit,但仍然无法在预测文件中加载模型.

您可以使用sklearn随机森林包分离模型和预测吗?

Jak*_*ead 26

...
import cPickle

rf = RandomForestRegresor()
rf.fit(X, y)

with open('path/to/file', 'wb') as f:
    cPickle.dump(rf, f)


# in your prediction file                                                                                                                                                                                                           

with open('path/to/file', 'rb') as f:
    rf = cPickle.load(f)


preds = rf.predict(new_X)
Run Code Online (Sandbox Code Playgroud)

  • scikit学习docs推荐`joblib.dump`,它也来自`sklearn.externals.joblib` (5认同)
  • @ user3013706你的意思是什么文件扩展名?没关系.我认为惯例是使用`.cpickle` (2认同)

ppl*_*ski 20

您可以使用joblibscikit-learn 保存和加载随机森林(实际上,scikit-learn 中的任何模型)

这个例子:

import joblib
from sklearn.ensemble import RandomForestClassifier
# create RF
rf = RandomForestClassifier()
# fit on some data
rf.fit(X, y)

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

# load
loaded_rf = joblib.load("my_random_forest.joblib")

Run Code Online (Sandbox Code Playgroud)

更重要的是,由于joblib.dump has compress参数的存在,所以模型可以被压缩。我对 iris 数据集做了非常简单的测试compress=3,文件大小减少了大约 5.6 倍。