首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有办法将pmml文件导入python吗?

有办法将pmml文件导入python吗?
EN

Stack Overflow用户
提问于 2017-03-10 15:43:21
回答 1查看 4.9K关注 0票数 1

我使用sklearn训练了一个模型,并使用sklearn2pmml将其导出为pmml格式。有没有一种方法可以将pmml文件转换回可以导入并在python中运行的东西?

我之所以要这样做,是因为我注意到pmml模型与sklearn模型的行为方式略有不同。具体来说,pmml文件为变量设置硬上、下界(在训练集中使用变量的最大值和最小值),而sklearn则不设置。当pmml模型遇到超出这些界限的数据时,我会遇到问题。这只是pmml模型和sklearn模型之间的一个不同之处,我希望能够将pmml文件重新导入python以运行它,并查看是否还有其他的。

EN

回答 1

Stack Overflow用户

发布于 2017-03-10 21:43:09

您不需要测试sklearn2pmml生成的模型的正确性。它基于JPMML-SkLearn库,它对集成测试进行了全面报道--Scikit学习预测和PMML预测是完全相同的。

您真正的问题是,您希望在其预期的“适用性域”之外应用模型。这是一个微乎其微的想法,因为在这种情况下,模型的行为没有被指定--垃圾输入,垃圾预测。

但是,如果您坚持必须能够在生产环境中向您的模型提供垃圾,那么只需禁用PMML值边界检查即可。如何做到这一点有许多方法:

  1. Value元素中删除IntervalInterval子元素。
  2. 修改ValueInterval子元素,以便将以前未见的值识别为有效值。例如,可以定义Input元素的边距,以包括所有值-Inf,+Inf。请参阅PMML规范中对ValueInterval元素的解释,以获得正确的语法。
  3. 将所有invalidValueTreatment元素的/PMML/<Model>/MiningSchema/MiningField属性值从"returnInvalid“更改为”returnInvalid“。如果缺少此属性,则默认为"returnInvalid“。所以您需要在那里插入invalidValueTreatment=asIs

我推荐选项3。您可以使用JPMML-模型库实现流程自动化:

代码语言:javascript
复制
org.dmg.pmml.PMML pmml = loadFromFile(..)
org.dmg.pmml.Visitor mfUpdater = new org.jpmml.model.visitors.AbstractVisitor(){
  @Override
  public VisitorAction visit(MiningField miningField){
    miningField.setInvalidValueTreatment(InvalidValueTreatmentMethod.AS_IS);
    return VisitorAction.CONTINUE;
  }
}
mfUpdater.applyTo(pmml);
saveToFile(pmml, ...)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42722322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档