gpt4 book ai didi

python - 有没有办法将 pmml 文件导入到 python 中?

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:33 26 4
gpt4 key购买 nike

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

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

最佳答案

您不需要测试 sklearn2pmml 生成的模型的正确性。它基于JPMML-SkLearn库,它完全覆盖了集成测试 - Scikit-Learn 预测和 PMML 预测被证明是相同的。

您真正的问题是您想要在其预期的“适用范围”之外应用模型。这是一个珠子的想法,因为在这种情况下没有指定模型的行为 - 垃圾输入,垃圾预测。

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

  1. 删除 ValueInterval来自 /PMML/DataDictionary/DataField 的子元素元素。
  2. 修改ValueInterval子元素,以便那些以前未见过的值将被识别为有效值。例如,您可以定义 Input 的边距。元素包含所有值 [-Inf, +Inf]。参见 Value 的解释和 Interval PMML 规范中的元素以确保语法正确。
  3. 更改 invalidValueTreatment所有属性值/PMML/<Model>/MiningSchema/MiningField元素从“returnInvalid”到“asIs”。如果缺少此属性,则默认为“returnInvalid”。所以你需要插入invalidValueTreatment=asIs在那里。

我会推荐选项#3。您可以使用 JPMML-Model 自动化该过程图书馆:

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, ...)

关于python - 有没有办法将 pmml 文件导入到 python 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42722322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com