gpt4 book ai didi

apache-spark - 如何在 Spark-MLlib PMML 文件中用精确的列名替换 DataField 值?

转载 作者:行者123 更新时间:2023-11-30 08:29:26 25 4
gpt4 key购买 nike

我使用 Spark 2.1.0。

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

enter image description here

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

最佳答案

有两种方法可以将 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”。对功能重复此过程。

关于apache-spark - 如何在 Spark-MLlib PMML 文件中用精确的列名替换 DataField 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44229984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com