【问题标题】:Apache Spark MLlib: How to import model from PMMLApache Spark MLlib:如何从 PMML 导入模型
【发布时间】:2017-06-14 17:00:16
【问题描述】:

我有一个 PMML 文件,该文件对未从 MLlib 导出的逻辑回归模型进行编码。

如何使用 Java 中的 MLlib 从 PMML 导入模型以进行评估/预测?

(我知道MLlib can export to PMML,但我需要从PMML导入)

【问题讨论】:

    标签: java apache-spark-mllib pmml


    【解决方案1】:

    您可以使用PMML4S-Spark 将 PMML 作为 SparkML 转换器导入,然后在 Scala 中进行预测/评估,例如:

    import org.pmml4s.spark.ScoreModel
    
    val model = ScoreModel.fromFile("the/pmml/model/path")
    val scoreDf = model.transform(df)
    

    如果你使用 PySpark,你可以使用PyPMML-Spark,例如:

    from pypmml_spark import ScoreModel
    
    model = ScoreModel.fromFile('the/pmml/model/path')
    score_df = model.transform(df)
    

    【讨论】:

      【解决方案2】:

      要导入,需要逆序执行PMML导出操作:

      1. 从 PMML 的 RegressionModel/RegressionTable 元素中提取截距和特征系数。
      2. 使用这些值实例化 Spark ML 的 LogisticRegressionModel 对象。

      这是我第二次发布这个答案。我想知道为什么第一个答案被删除(没有任何讨论/解释)?

      【讨论】:

      • 也许问你这个问题的 OP 已经删除了它,因此你的答案也被删除了。当答案未被接受时,往往会发生这种情况
      • @user1808924 操作在这里。您没有发布答案,仅发表评论。我删除了你的评论,因为它不具建设性而且非常模糊。感谢您的回答,但这并不是我要问的。我需要一种将 PMML 直接导入 MLlib 的方法,而无需自己解析特征然后实例化模型。
      • @Qululu 没有更多的“直接”方式。 Apache Spark 和 PMML 使用不同的概念/数据结构来表示逻辑回归模型。您必须在两者之间进行手动翻译,没有神奇的“演员”。或者,您为什么不在 Apache Spark 上对 PMML 模型进行评分,因为它们已经准备好使用 Java 库了。
      • @user1808924 您好,在 java 中从 PMML 中提取截距和特征系数的最佳方法是什么?
      • @userit1985 最好的方法是以相反的顺序执行 PMML 导出操作 - 字面意思。打开 Apache Spark 的逻辑回归类,滚动到 PMMLExportable 实现,获取代码块并反转其行。无需引入 3rd 方依赖项或发明新的应用程序逻辑,一切就绪。
      【解决方案3】:

      您是否考虑过使用 PMML 加载程序,例如 jpmml-spark?根据您构建模型的位置和使用的 pmml 导出器,您可能会遇到互操作性问题。我相信 sklearn2pmml 是基于 jpmml 库的,所以如果你结合使用它们应该有很好的互操作性。

      【讨论】:

        猜你喜欢
        • 2017-10-15
        • 2015-11-05
        • 2017-11-25
        • 2016-03-07
        • 2016-03-20
        • 2015-02-20
        • 1970-01-01
        • 2018-02-17
        • 2015-04-10
        相关资源
        最近更新 更多