pyspark - 有没有办法将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)
解决方案
我已经知道 pyspark2pmml 或 jpmml-sparkml,两者都有训练数据作为输入。
JPMML -SparkML库(直接或通过PySpark2PMML包装器库)仍然是您唯一的选择。但是,您应该查看它的 README 文件以刷新您对它的知识 - 您的示例使用过时的 API(toPMMLBytes
实用程序方法而不是PMMLBuilder#buildByteArray
构建器方法)。
关于训练数据集的需求,JPMML-SparkML 需要知道训练数据集的模式(以org.apache.spark.sql.types.StructType
对象的形式),而不是实际数据。此架构用于获取列名、数据类型和其他元数据。
如果您没有可用的原始架构,那么以编程方式创建一个架构应该不难。
推荐阅读
- ios - 将 UIViews 连接到 json 响应,反之亦然
- azure-active-directory - Microsoft Graph:尝试获取邮箱设置时收到 400 错误请求
- java - 主要或完整 GC 是否会从老一代中删除活动对象?
- python - 如何在python中覆盖具有多个校准相机的同一场景的两个实时图像
- vue.js - Nuxt.js 导入 lodash
- visual-studio - 缺少 NuGet 包详细信息窗口
- elasticsearch - 在 Elasticsearch 中将“long”数据类型转换为字符串/文本
- php - Laravel 8 在关联表的使用中拉取数据有很多问题
- python - Python 给了我很多回溯的东西是怎么回事
- python - 使用迭代时在 tkinter textarea 小部件中设置多种字体