在Hadoop平台上导出Scikit Learn随机森林
我用pandas和scikit-learn开发了一个垃圾邮件分类器,现在准备把它整合进我们的基于hadoop的系统里。为此,我需要把我的分类器导出成一种比pickle更常见的格式。
我最想用的导出格式是预测模型标记语言(PMML)。这个格式和我们已经在用的Cascading非常兼容。不过让我惊讶的是,我找不到任何可以把scikit-learn模型导出为PMML的Python库。
有没有人有过类似的经验?有没有什么替代PMML的格式,可以让scikit-learn和hadoop之间更好地互通?还有没有靠谱的PMML导出库呢?
1 个回答
9
你可以使用 Py2PMML 把模型导出为 PMML 格式,然后通过 JPMML-Cascading 在 Hadoop 上进行评估。JPMML 是开源的,但 Zementis 的 Py2PMML 看起来是个商业产品。除了这个选择,似乎没有其他工具可以在 Java/Hadoop 上评分导出为 PMML 的 Scikit 模型。不过,Scikit 的核心团队正在 计划 实现一个 PMML 导出工具。如果你不想使用商业解决方案,或者不想等这个工具上线,你还有一些其他选择,但这些需要一些编码工作:
- 调整 SKLearn Compiled trees 项目,让它生成 Java/MapReduce 代码,而不是 C 代码。
- 使用
export_graphviz
函数获取每个决策树的 DOT 表示,然后写一个小的 Java 解释器。 - 不考虑 Java 和 Hadoop,使用 Apache Spark,通过 Python、Scikit 和 PySpark 并行评估每个决策树。
希望这些信息对你有帮助!