【问题标题】:How to replace the DataField values with exact column names in Spark-MLlib PMML file?如何用 Spark-MLlib PMML 文件中的确切列名替换 DataField 值?
【发布时间】:2017-10-29 00:35:26
【问题描述】:

我使用 Spark 2.1.0。

我一直在尝试将 Spark-MLlib 线性回归模型导出为 PMML 文件。我还成功导出了 PMML 文件。但是在那个文件中,我看不到任何字段名称。我能看到的都是这样的,

谁能告诉我这是什么原因?另外,请告诉我如何获取列名来代替它。

【问题讨论】:

    标签: apache-spark machine-learning linear-regression apache-spark-mllib pmml


    【解决方案1】:

    有两种方法可以将 Apache Spark 模型导出为 PMML 数据格式。首先,在 Spark ML 抽象级别工作时,您可以使用 JPMML-SparkML 库。其次,当在 Spark MLlib 抽象级别工作时,这里似乎就是这种情况,那么您可以使用内置的 PMMLExportable 特征。

    JPMML-SparkML 通过DataFrame#schema() 从 Spark ML 数据架构中检索列名。不幸的是,Spark MLlib 没有这样的选项,因此功能名称“field_{n}”和标签名称“target”只是虚拟的硬编码名称。

    使用JPMML-Model 库重命名 PMML 文档中的字段相当容易:

    pmmlExportable.toPMML("/tmp/raw-pmml-file")
    org.dmg.pmml.PMML pmml = org.jpmml.model.JAXBUtil.unmarshal("/tmp/raw-pmml-file");
    org.jpmml.model.visitors.FieldRenamer targetRenamer = new FieldRenamer(FieldName.create("target"), FieldRenamer.create("y"));
    targetRenamer.applyTo(pmml);
    org.jpmml.model.JAXBUtil.marshal(pmml, "/tmp/final-pmml-file");
    

    如果将此 PMML 对象实例编组为 PMML 文件,则可以看到字段“target”(及其所有引用)已重命名为“y”。对特征重复该过程。

    【讨论】:

      猜你喜欢
      • 2017-06-14
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      相关资源
      最近更新 更多