首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保存大型滑雪板RandomForestRegressor模型进行推理

如何保存大型滑雪板RandomForestRegressor模型进行推理
EN

Stack Overflow用户
提问于 2021-01-21 19:42:57
回答 2查看 1.5K关注 0票数 0

我训练了一个关于19 on的训练数据的Sklearn模型。我想将它保存到磁盘中,以便以后使用它进行推断。由于在另一个堆栈溢出问题中再次出现,我尝试了以下方法:

  • 泡菜

Pickle.dump(模型,打开(文件名,'wb'))

成功地保存了模型。磁盘上的大小是1.9 GB。

loaded_model =pickle.load(打开(文件名,'rb'))

模型的加载导致了MemorError (尽管有16 GB内存)

  • cPickle -与Pickle相同的结果
  • 贾瓦布

joblib.dump(est,'random_forest.joblib‘compress=3)

它还以加载文件时的MemoryError结束。

  • 盗贼

D=klepto.archives.dir_archive(‘sklearn_model’,cached=True,serialized=True) d'sklearn_random_forest‘= est d.dump()

创建了KeyError,但是当我想使用以下代码加载它时,我得到了sklearn_random_forest:

D=klepto.archives.dir_archive(‘sklearn_model’,cached=True,serialized=True) d.load(model_params) est = dmodel_params

我试着用相同的代码保存字典对象,结果成功了,所以代码是正确的。显然,Klepto不能坚持滑雪板模型。我使用缓存和序列化的参数,但没有帮助。

任何有关如何处理此问题的提示都将不胜感激。是否有可能以JSON、XML、HDFS或其他格式保存模型?

EN

回答 2

Stack Overflow用户

发布于 2021-01-21 19:56:48

尝试使用joblib.dump()

在这种方法中,您可以使用param "compress“。这个参数取0到9之间的整数值,这个值越高,你的文件得到的压缩就越多。理想情况下,压缩值为3就足够了。

唯一的缺点是压缩值越高,写入/读取速度就越慢!

票数 2
EN

Stack Overflow用户

发布于 2021-02-26 23:02:51

随机林模型的大小并不严格取决于您训练它的数据集的大小。相反,您可以在随机森林分类器文档上看到其他参数,这些参数控制着模型的大小。参数如下:

  • n_estimators -树的数量
  • max_depth --每棵树有多高?
  • min_samples_splitmin_samples_leaf -允许树中的节点拆分/继续拆分的样本数

如果您已经使用了大量的估计器、很大的最大深度和非常低的叶/分割样本来训练您的模型,那么您的结果模型可能是巨大的--这就是您遇到内存问题的地方。

在这些情况下,我经常发现训练较小的模型(通过控制这些参数) --只要它不破坏性能度量--将解决这个问题,然后您可以回到joblib或其他您提到的保存/加载模型的解决方案上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65834680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档