xgb模型json转pmml

一 背景:

        在实际项目中往往会有不同种类的模型,如xgb的训练完保存为json格式、pkl格式以及原始booster的.model格式,预测需要用到pmml可以在spark中借助大数据的能力的跑因此需要对模型的格式进行转换。
二 方案:

    方法一:通过python的方式
    需要安装sklearn2pmml和nyoka。两个包借助于xgboost_to_pmml方法和PMMLPipeline对象实现纯python代码的转换,但是对同一份数据,python转换后的PMML模型和json版的模型diff比较大。python使用32位浮点存储叶子节点和并用64位sigmoid运算的结果是和pmml没有加入 x-mathContext=”float” 的预测结果相同的。而当xgboost默认做32位sigmoid运算时,pmml的 x-mathContext=”float” 并不能在底层上同样实现正确的32位sigmoid运算。

     通过下面两种方法可以缓解:在python中使用 model._final_estimator.predict(mapper.transform(data), output_margin=True) 得到所有子树叶节点值的统计和后,手动计算64位浮点sigmoid运算 sigmoid = lambda x: 1 / (1 + np.exp(-x, dtype=np.float64)) ,同时在pmml文件中删除RegressionModel中的x-mathContext=”float”,且删除OutputField中的dataType=”float”,可以保证python和pmml的预测结果相同。
不进行任何改动,但是使用到预测结果的阈值需要进行分组时,阈值不能过于精准,建议四舍五入至4位小数,否者阈值是0.09169989时,python预测了0.09169989,但是pmml却预测出0.091699906,会使线上线下分组结果不统一。
     出现问题:sklearn2pmml PMMLPipeline TypeError: Last step of Pipeline should implement fit or be the string 'passthrough'
     原因:加载的模型用到了booster类,该类并没有实现fit方法
     解决:需要改变加载模型的方式,首先创建 XGBClassifier或XGBRegressor类对象,创建Booster对象加载模型,将booster对象赋值给模型对象的_Booster属性,然后把模型对象传入PMMLPipeLine的创建参数里,模型对象实现了fit方法,因此上面的问题解决。

方法二:通过python+java的方式。
            借助python先将json的模型,转成.model格式,然后生成xgb.fmap将编号和特征名称对应起来,利用jpmml-xgboost进行转换  https://pan.baidu.com/s/1vmPHmHZuAKIfkAOQnLcADA
通过下面的命令:
        java  -jar   pmml-xgboost-example-executable-1.7-SNAPSHOT.jar  --model-input   xgb_model_utf-8.model --fmap-input xgb.fmap --target-name  PredictScore --pmml-output  xgb_model_utf-8.pmml

总结:(1)对xgb模型的加载,可以通过booster的方式,但是该类没有实现fit方法,也可以创建具体的分类或回归的模型对象,将booser赋值给模型对象的_Booster, 通过模型对象进行predict

           (2)模型对象的predict方法的参数是ndarry类型,可以通过pandas处理数据,pandas.iloc[:,:].values直接作为入参。

            (3)python调用shell的过程,遇到上文有outputfile的写文件操作,一定要将该文件的句柄通过flush操作,等待所有数据都写完之后再执行os.system

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/128575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS2022 打包WPF安装程序最新教程(图文详解)

文章目录 前言一、安装打包Installer插件1、单独安装2、VS中在线安装二、使用步骤1、创建安装项目2、安装项目主界面3、添加项目输出4、添加快捷方式图标5、添加卸载项目a、新建项目b、添加项目输出c、创建快捷方式6、给快捷方式添加图标a、在Resource文件夹中添加图标文件b、选…

SQL语法实践(一)

文章 原文链接 实践 CREATE TABLE friend(fid INT NOT NULL,NAME VARCHAR(10) NOT NULL,age INT NOT NULL,adress VARCHAR(10) )SHOW TABLES; SELECT * FROM friend; SELECT fid,NAME FROM friend;INSERT INTO friend VALUES(1,Jack,18,Tianjing); INSERT INTO friend VALUE…

佳易王桌球室台球厅计时计费电脑收费管理系统软件试用版V18.0下载

佳易王桌球室台球厅计时计费电脑收费管理系统软件试用版V18.0下载 一、佳易王桌球棋牌计时计费软件部分功能简介: 1、计时计费功能 :开台时间和所用的时长直观显示,每3秒即可刷新一次时间。 2、销售商品功能 :商品可以绑定桌子…

elementui el-upload 上传文件

文章目录 前言一、Html2.上传 总结 前言 在使用element中的el-upload上传文件或者图片时,需要先把el-upload的自动上传改为手动上传:auto-upload“false”然后el-upload内部会调用this.$refs.upload.submit();方法,从而实现多个文件上传。 提示&#xf…

鸿蒙应用开发之后台代理提醒

一、简介 随着生活节奏的加快,我们有时会忘记一些重要的事情或日子,所以提醒功能必不可少。应用可能需要在指定的时刻,向用户发送一些业务提醒通知。例如购物类应用,希望在指定时间点提醒用户有优惠活动。为满足此类业务诉求&…

【GitLab、GitLab Runner、Docker】GitLab CI/CD 应用

安装Gitlab开源版 官方文档-安装Gitlab 使用Docker安装 sudo docker run --detach \--hostname gitlab.example.com \--env GITLAB_OMNIBUS_CONFIG"external_url http://${ip}:9999/; gitlab_rails[gitlab_shell_ssh_port] 8822;" \--publish 443:443 --publish 99…

Spring、SpringMVC、Mybatis

一.Spring基础 1.Spring 框架是什么 Spring 是一款开源的轻量级 Java 开发框架,我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,例如,Spring core、Spring JDBC、Spring MVC 等,使用这些模块可…

OpenCV官方教程中文版 —— 图像修复

OpenCV官方教程中文版 —— 图像修复 前言一、基础二、代码三、更多资源 前言 本节我们将要学习: • 使用修补技术去除老照片中小的噪音和划痕 • 使用 OpenCV 中与修补技术相关的函数 一、基础 在我们每个人的家中可能都会几张退化的老照片,有时候…

【实战Flask API项目指南】之五 RESTful API设计

实战Flask API项目指南之 RESTful API设计 本系列文章将带你深入探索实战Flask API项目指南,通过跟随小菜的学习之旅,你将逐步掌握 Flask 在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧! 前言 当小菜踏入Flask后端开发的世界时…

如何在idea中使用maven搭建tomcat环境

目录 一、创建maven项目 二、完善代码结构 三、引入依赖和插件 四、启动tomcat,运行项目 (1)点击添加配置 (2)点击左上角的加号,选择maven (3)输入运行命令 五、验证 一、创建…

AI AIgents时代-(六.)OpenAgents

最近Agents框架层出不穷,我们这次选择了OpenAgents,一个声称在Interface和Environment上全方面超越AutoGPT,OpenInterPreter等框架🤯 接下来我们逐步拆解OpenAgents的独特之处!OpenAgents开发的LLM-powered代理XLang集…

SpringCloud 微服务全栈体系(十一)

第十章 RabbitMQ 三、SpringAMQP SpringAMQP 是基于 RabbitMQ 封装的一套模板,并且还利用 SpringBoot 对其实现了自动装配,使用起来非常方便。 SpringAmqp 的官方地址:https://spring.io/projects/spring-amqp SpringAMQP 提供了三个功能&…

Istio实战(十三)-SideCar注入

查看默认sidecar配置 kubectl get mutatingwebhookconfiguration istio-sidecar-injector -o yaml | grep "namespaceSelector:" -A5namespaceSelector:matchLabels:istio-injection: enabledobjectSelector: {}reinvocationPolicy: Neverrules: 可以看出,istio默认…

架构师重要知识点100条

1、企业集成分类:按传输方式分 特点 消息集成 数据量小,交互频繁,立即地,异步 共享数据库 交互频繁,立即地,同步 文件传输 数据量大,交互频度小,即时性要求低(月末,年末) 2、 企业集成分类:按集成点分 集成点 效果 解题关键点 界面集成 界面 统一入口,产生“整体”感…

win10 下编译ffmpeg3.36.tar.gz

所需工具: win10 ffmpeg3.36.tar.gz。 或其他版本,下载地址:Index of /releases msys2。 下载地址:http://www.msys2.org。 Visual Studio 2017。 1. 安装MSYS MSYS2像是windows下的一个子系统,…

“没有酒瓶”的新春礼酒,泸州老窖的颠覆性之作

执笔 | 萧 萧 编辑 | 扬 灵 没有想到,新春礼酒还能跳出生肖酒造型桎梏,开创出“没有酒瓶的白酒”。 没有想到,即将要发布的新品就“藏”在每一位参会者都触手可及的餐桌正中。 没有想到,首发定价如此“实诚”,加…

Galaxybase全面支持国密算法

万物互联时代,图技术作为底层技术基座,赋能企业关联全域数据,充分激活数据资产价值,受到社会和国家的关注。而随着图技术在各行业的落地和应用,图技术如何保障关联数据的安全,成为重点议题。 在此背景下&a…

搭建VM虚拟机+Centos7 Oracle版 + 配置ssh + Xftp + secureCRT

文章目录 1 视频地址1.1 基本参数1.2 ISO下载地址:1.3 开启ssh1.3.1 使用root用户进行1.3.2 修改ssh配置1.3.3 关闭 SELINUX 2 查询虚拟机的ip2.1 联网2.2 桌面打开终端查询虚拟机ip 3 连接Xftp4 连接SecureRT 1 视频地址 01-搭建VM虚拟机Centos7 Oracle版 配置ss…

第18期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

SSL证书在网购中的重要性

近年来,互联网的快速发展使得线上服务范围不断延伸,这其中网络购物更是在全球范围内都呈现上升趋势。然而病毒攻击,网络钓鱼攻击和恶意软件攻击无处不在,网上购物的安全性受到极大威胁。为了保护网络购物的安全,构建可…