【问题标题】:Import sklearn2pmml generated .pmml back into ScikitLearn or Python将 sklearn2pmml 生成的 .pmml 导入 ScikitLearn 或 Python
【发布时间】:2018-02-25 13:41:16
【问题描述】:

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

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

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

等等……

所以我想知道是否/如何将此文件导入 Python(最好是 2.7)或 Scikit-Learn 以便像在 Java/Scala 中一样使用。类似于

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

感谢您的帮助!

【问题讨论】:

  • 您是否打算将其导出、更改,然后再将其重新加载到 python 中?或者您只是想在某个时候重新打开原件?
  • 嗨托尼。无需更改,只需将其重新加载回 Python,然后执行简单的预测。因此,如果有人构建了一个简单的回归,并通过电子邮件向我发送了一个 .pmml 文件,我可以在我自己的 Jupyter notebook 或 Python REPL 中打开那个 .pmml 文件,并给它一些数据,然后进行预测。你可以用 Spark 之类的东西来做,但我还没有看到用 Python 做。
  • 我不熟悉pmml,但是你试过pickle,或者sklearn+pickle的另一个例子
  • 谢谢托尼。我们只是尝试在 PMML 中进行此操作以进行概念验证。

标签: python-2.7 scikit-learn pmml


【解决方案1】:

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

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

通常,使用sklearn2pmml 的人确实希望在其他平台(例如 IBM 的 SPSS、Apache Spark ML、Weka 或数据挖掘集团网站上的任何其他消费者as listed)中重新使用 PMML 模型。

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

您可以阅读有关如何以 Pickle 格式保存/加载模型的更多信息(连同其已知问题)here

【讨论】:

  • 非常感谢。我知道 Pickle,我们一直在为 Apache Spark 使用 PMML,并且很好奇这是否可以在 Python 中实现。再次感谢!
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-06-01
      • 2020-06-05
      • 2017-02-24
      • 2019-04-29
      • 2017-08-01
      • 2016-07-13
      • 1970-01-01
      • 2017-11-17
      • 2017-11-22
      相关资源
      最近更新 更多