管道未使用 JPMML 和 Pyspark 正确转换为 PMML
Pipeline does not get converted to PMML properly using JPMML and Pyspark
我正在使用 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)
The generated PMML files should be different if it's converting properly right?
不一定。这完全取决于您的分类功能 - PCA 生成的列可能根本不包含在 PMML 文档中,因为它们没有 "contribute" 来分隔 类。为了检验这个假设,尝试不同的分类函数,例如 DecisionTreeClassifier
与 LogisticRegression
.
此外,验证 PMML 文档是否正确的唯一方法是执行它,并根据原始 Apache Spark(ML) 结果验证其结果。
我正在使用 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)
The generated PMML files should be different if it's converting properly right?
不一定。这完全取决于您的分类功能 - PCA 生成的列可能根本不包含在 PMML 文档中,因为它们没有 "contribute" 来分隔 类。为了检验这个假设,尝试不同的分类函数,例如 DecisionTreeClassifier
与 LogisticRegression
.
此外,验证 PMML 文档是否正确的唯一方法是执行它,并根据原始 Apache Spark(ML) 结果验证其结果。