【问题标题】:Exporting a Scikit Learn Random Forest for use on Hadoop Platform导出 Scikit Learn Random Forest 以在 Hadoop 平台上使用
【发布时间】:2014-08-04 10:38:49
【问题描述】:

我使用 pandas 和 scikit learn 开发了一个垃圾邮件分类器,可以将其集成到我们基于 hadoop 的系统中。为此,我需要将我的分类器导出为比酸洗更常见的格式。

预测模型标记语言 (PMML) 是我首选的导出格式。它与我们已经使用的 Cascading 配合得非常好。但是,令人惊讶的是,我找不到任何将 scikit-learn 模型导出到 PMML 的 python 库。

有没有人有过这个用例的经验?是否有任何替代 PMML 的方法可以在 scikit-learn 和 hadoop 之间提供互操作性?一个可靠的 PMML 导出库怎么样?

【问题讨论】:

  • 感谢您的意见。使用流 API 并不理想,但如果一切都失败了,我可能不得不求助于它。
  • 垃圾邮件分类为垃圾邮件?你是怎么开始使用随机森林的?
  • 实际上在这种情况下,它是微博垃圾邮件,我们只针对所有机器生成的消息的子集。相对多样的特征似乎与随机森林相得益彰。

标签: python hadoop machine-learning scikit-learn pmml


【解决方案1】:

您可以使用 Py2PMML 将模型导出到 PMML,然后使用 JPMML-Cascading 在 Hadoop 上对其进行评估。 JPMML 是开源的,但 Zementis 的 Py2PMML 似乎是一个商业产品。除了这个替代方案之外,没有其他工具可以对在 Java/Hadoop 上导出为 PMML 的 Scikit 模型进行评分。核心 scikit 团队是 planning 来实现 PMML 导出器。但是,如果您不想要任何商业解决方案或等待此类工具的实施,您仍然有一些选择,但它们需要一些编码:

  • 调整SKLearn Compiled trees 项目,使其生成Java/MapReduce 代码而不是C。
  • 使用export_graphviz函数获取每个决策树的DOT表示并编写一个小型Java解释器。
  • 忘记 Java 和 Hadoop,使用 Apache Spark 并使用 Python、Scikit 和 PySpark 并行评估每个决策树。

希望对你有帮助!

【讨论】:

  • SkLearn 模型到 PMML 的导出现在可以由 JPMML-SkLearn (github.com/jpmml/jpmml-sklearn) 库/命令行应用程序处理。它比 Py2PMML 更健壮且更易于使用。
猜你喜欢
  • 2014-06-27
  • 2015-10-23
  • 2023-03-21
  • 2018-08-10
  • 1970-01-01
  • 2016-12-07
  • 2014-03-16
  • 2017-02-10
  • 2020-03-10
相关资源
最近更新 更多