使用JPMML和Pyspark,管道不会正确转换为PMML

时间:2016-11-07 05:40:51

标签: apache-spark pyspark apache-spark-mllib apache-spark-ml pmml

我正在使用Pyspark和JPMML库从我的管道模型生成PMML模型。但我不认为它正常生成。为了测试这个,我使用相同的数据集和分类器创建了两个不同的管道模型,如下所示。

pipeline = Pipeline(stages = [assembler, slicer,pca, binarizer,assembler2, formula,classifier])
pipeline2 = Pipeline(stages = [assembler, slicer, binarizer,assembler2, formula,classifier])

但是当我使用以下代码片段生成PMML文件时,它会输出两个相同的文件。这意味着模型之间没有区别。我很迷惑。如果生成的PMML文件正确转换,它们应该是不同的吗?

pipelineModel1 = pipeline.fit(df)
pmmlBytes = toPMMLBytes(spark, df, pipelineModel1)
with open('test.pmml','wb') as output:
output.write( pmmlBytes)

pipelineModel2 = pipeline2.fit(df)
pmmlBytes2 = toPMMLBytes(spark, df, pipelineModel2)
with open('test1.pmml','wb') as output:
output.write( pmmlBytes2)

1 个答案:

答案 0 :(得分:1)

  

生成的PMML文件如果转换正确,应该是不同的吗?

不一定。这一切都取决于您的分类功能 - 可能会发生PCA生成的列根本不包含在PMML文档中,因为它们没有“贡献”分离类。要测试此假设,请尝试不同的分类函数,例如LogisticRegressionx=totalFee/installment

此外,验证PMML文档是否正确的唯一方法是执行它,并根据原始Apache Spark(ML)结果验证其结果。