首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在装入pypmml后,sklearn2pmml没有给出与sklearn泡菜相同的预测输出

在装入pypmml后,sklearn2pmml没有给出与sklearn泡菜相同的预测输出
EN

Stack Overflow用户
提问于 2022-08-11 16:58:40
回答 1查看 125关注 0票数 0

当测试以前从Pickle文件转换出来的PMML对象(从sklearn对象中转储)时,我无法再现与泡菜模型相同的结果。在学习过程中,我们看到,对于X中的输入,我获得了0 1 0作为类,但是在PMML中,我会将概率逼近到11 1。我做错了什么吗?这种模型行为不是我在转换泡菜文件时所期望的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-11 20:50:21

PMML模型根据名称而不是位置标识输入列。因此,不应该使用“匿名”数据存储(如numpy.ndarray),因为根据定义,无法正确标识输入列。

在这里,输入列的顺序是有问题的,因为RF模型是使用一组随机生成的数据(3x4 numpy.array)来训练的。RF模型可能只使用一两个输入列,而忽略其余的输入列(例如,"x1“和"x3”非常重要,而"x2“和"x4”则不重要)。在转换过程中,SkLearn2PMML包删除了所有冗余特性。在当前的示例中,RF模型需要一个两列输入数据存储,其中第一列对应于"x1“,第二列对应于"x3";您将传递一个四列输入数据存储,其中第二列被"x2”占用。

TLDR:在使用PMML模型时,执行以下操作:

  1. 不要使用匿名数据存储!使用pandas.DataFrame (而不是numpy.ndarray)训练您的模型,并使用相同的数据存储类进行预测。这样,即使SkLearn2PMML包决定消除一些冗余列,列映射也总是正确的。
  2. 使用JPMML-评价器-Python包而不是PyPMML。具体来说,远离PyPMML的predict(X: numpy.ndarray)方法!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73324406

复制
相关文章

相似问题

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