有什么方法可以将pyspark随机森林模型转换为pmml?

时间:2020-06-23 08:32:18

标签: pyspark

我已经在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)

1 个答案:

答案 0 :(得分:0)

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

JPMML-SparkML库(直接或通过PySpark2PMML包装器库)仍然是您唯一的选择。但是,您应该检出其README文件以刷新有关该文件的知识-您的示例使用了过时的API(pipeline { agent any stages { stage('Hello') { steps { echo 'Hello World' result=sh(script:'ls -al', returnStdout: true) } } } } 实用程序方法而非org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: WorkflowScript: 8: Expected a step @ line 8, column 13. result=sh(script:'ls -al', returnStdout: true) ^ 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310) at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268) at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688) at groovy.lang.GroovyShell.parse(GroovyShell.java:700) at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:129) at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:123) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:517) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:480) at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:268) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) 构建器方法)。

关于训练数据集的需求,那么JPMML-SparkML需要知道训练数据集的模式(以node { stage("Fetch code from git") { echo 'Hello World' result = sh(script:'ls -al', returnStdout: true) echo result } } 对象的形式),而不是实际的数据。此架构用于获取列名,数据类型和其他元数据。

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