将 sklearn2pmml 生成的 .pmml 导入 ScikitLearn 或 Python

Import sklearn2pmml generated .pmml back into ScikitLearn or Python

很抱歉,如果这个问题可能已经在某个地方得到了回答,但我已经找了大约一个小时,但找不到好的答案。

我有一个在 Scikit-Learn 中训练的简单逻辑回归模型,我正在将其导出到 .pmml 文件。

  from sklearn2pmml import PMMLPipeline, sklearn2pmml
  my_pipeline = PMMLPipeline(
  ( classifier", LogisticRegression() )
      )
  my_pipeline.fit(blah blah)
  sklearn2pmml(my_pipeline, "filename.pmml")

等....

所以我想知道的是 if/how 我可以将此文件导入回 Python(最好是 2.7)或 Scikit-Learn,就像我在 Java/Scala 中那样使用。类似于

"import (filename.pmml) as pm pm.predict(data)

感谢您的帮助!

Scikit-learn 不支持导入 PMML 文件,所以恐怕无法实现您想要实现的目标。

使用 sklearn2pmml 等库的概念实际上是为了扩展 sklearn 在支持将模型导出为 PMML 格式时所没有的功能。

通常,那些使用 sklearn2pmml 的人确实希望在其他平台(例如 IBM 的 SPSS、Apache Spark ML、Weka 或列出的任何其他消费者中重用 PMML 模型 在 Data Mining Group 的网站上)。

如果您希望保存使用 scikit-learn 创建的模型并在之后使用 scikit-learn 重新使用它,那么您应该探索其名为 Pickle 的原生持久性模型机制,它使用二进制数据格式。

您可以阅读更多关于如何save/load 以 Pickle 格式建模(及其已知问题)here

我创建了一个简单的解决方案来从我从 knime 分析平台导出的 pmml 文件生成 sklearn kmeans 模型。你可以看看pmml2sklearn

您可以使用 PyPMML 在 Python 中使用 PMML 对新数据集进行预测,例如:

from pypmml import Model

model = Model.fromFile('the/pmml/file/path')
result = model.predict(data)

数据可以是字典、json、Series 或 Pandas 的 DataFrame。