首页 > 解决方案 > 有没有办法将pyspark随机森林模型转换为pmml?

问题描述

我在 pyspark2.1 中训练了 RandomForest,但保存为 pyspark 模型文件。

rf_model = RandomForestClassifier(featuresCol='features',
                              labelCol='click',
                              maxDepth=10,
                              maxBins=32,
                              numTrees=100,
                             )
model = rf_model.fit(dftrain)
model_path = 'hdfs://hacluster/user/model'
model.save(model_path)

但是现在,我们已经下载了没有 dftrain 数据的模型,现在无法访问 hdfs。有没有什么方法可以在没有精确训练数据的情况下将模型文件转换为 pmml?

我已经知道 pyspark2pmml 或 jpmml-sparkml,两者都有训练数据作为输入。就像,

from jpmml_sparkml import toPMMLBytes
pmmlBytes = toPMMLBytes(sc, dftrain, pipelineModel)
print(pmmlBytes)

标签: pyspark

解决方案


我已经知道 pyspark2pmml 或 jpmml-sparkml,两者都有训练数据作为输入。

JPMML -SparkML库(直接或通过PySpark2PMML包装器库)仍然是您唯一的选择。但是,您应该查看它的 README 文件以刷新您对它的知识 - 您的示例使用过时的 API(toPMMLBytes实用程序方法而不是PMMLBuilder#buildByteArray构建器方法)。

关于训练数据集的需求,JPMML-SparkML 需要知道训练数据集的模式(以org.apache.spark.sql.types.StructType对象的形式),而不是实际数据。此架构用于获取列名、数据类型和其他元数据。

如果您没有可用的原始架构,那么以编程方式创建一个架构应该不难。


推荐阅读