机器学习在用于产品的时候,经常会遇到跨平台的问题。

比如用Python基于一系列的机器学习库训练了一个模型,但是有时候其他的产品和项目想把这个模型集成进去,但是这些产品很多只支持某些特定的生产环境比如Java,为了上一个机器学习模型去大动干戈修改环境配置很不划算,此时我们就可以考虑用预测模型标记语言(Predictive Model Markup Language,以下简称PMML)来实现跨平台的机器学习模型部署。

一. PMML概述

PMML是数据挖掘的一种通用的规范,它用统一的XML格式来描述我们生成的机器学习模型。这样无论你的模型是sklearn,R还是Spark MLlib生成的,我们都可以将其转化为标准的XML格式来存储。当我们需要将这个PMML的模型用于部署的时候,可以使用目标环境的解析PMML模型的库来加载模型,并做预测。

可以看出,要使用PMML,需要两步的工作,都需要相关的库支持。

  1. 将离线训练得到的模型转化为PMML模型文件
  2. 将PMML模型文件载入在线预测环境,进行预测

二. PMML模型的生成和加载相关类库

大部分模型都可以用PMML的方式实现

  • jpmml的说明文档:GitHub - jpmml/jpmml-evaluator: Java Evaluator API for PMML
  • Jpmml支持的转换语言,主流的机器学习语言都支持了;
  • 从下图可以看到,它支持R、python和spark、xgboost、lightgbm等模型的转换,用起来非常方便;

三、工具的工程实践:

1. Python模型上线,使用了模型转换成PMML上线方法

如果我们使用的是sklearn,那么可以使用sklearn2pmml这个python库来做模型文件的生成,这个库安装很简单,使用"pip install sklearn2pmml"即可。python-sklearn里面的模型都支持,也支持xgboost,并且PCA,归一化可以封装成preprocess转换成PMML,所以调用起来很方便。特别需要注意的是:缺失值的处理会影响到预测结果,大家可以可以看一下, 用PMML方式预测,模型预测一条记录速度是1ms,可以用这个预测来预估一下根据你的数据量,整体的速度有多少

2. 如果使用的是Spark MLlib, 这个库有一些模型已经自带了保存PMML模型的方法,可惜并不全。如果是R,则需要安装包"XML"和“PMML”。此外,JAVA库JPMML可以用来生成R,SparkMLlib,xgBoost,Sklearn的模型对应的PMML文件。github地址是:https://github.com/jpmml/jpmml。加载PMML模型需要目标环境支持PMML加载的库,如果是JAVA,则可以用JPMML来加载PMML模型文件。

https://zhuanlan.zhihu.com/p/39021238

[机器学习] PMML实现模型上线相关推荐

  1. 机器学习模型上线及优化流程

    机器学习模型上线及优化流程 时间:2020-07-09 文章目录 机器学习模型上线及优化流程 通用流程: 1) 业务问题界定和定义 2) 数据样本的筛选和构造 3) label的定义与标注 4) 选择 ...

  2. 模型上线和pmml简介

    目前存在的几种模型上线的方式 1.R+pmml+spark+airflow调度  其他团队用R语言训练模型并转为pmml文件,然后我们使用spark将这个pmml文件封装为jar,使用airflow提 ...

  3. Python模型上线pmml以及自定义函数转换

    通常xgb或lgb模型通过pmml上线都比较简单,但是逻辑回归模型因为涉及到woe的转换,就要通过自定义转换函数的方式来实现. 1.常规转换-模型训练好之后立即转换 import joblib fro ...

  4. [机器学习] 二分类模型评估指标---精确率Precision、召回率Recall、ROC|AUC

    一 为什么要评估模型? 一句话,想找到最有效的模型.模型的应用是循环迭代的过程,只有通过持续调整和调优才能适应在线数据和业务目标. 选定模型时一开始都是假设数据的分布是一定的,然而数据的分布会随着时间 ...

  5. 机器学习中的模型评估方法和指标

    机器学习模型的评估方法和指标 1.选择怎样的评估指标 1.1 Online metrics vs Offline metrics Online metrics是直接在线上环境做AB测试,比较两个实验组 ...

  6. 机器学习中的模型评价、模型选择及算法选择

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 正确使用模型评估.模型选择和算法选择技术无论是对机器学习学术研究还是工业场景应用都至关重要.本文将对这三个任务的相关技术 ...

  7. 一文读懂机器学习中的模型偏差

    一文读懂机器学习中的模型偏差 http://blog.sina.com.cn/s/blog_cfa68e330102yz2c.html 在人工智能(AI)和机器学习(ML)领域,将预测模型参与决策过程 ...

  8. PAI分布式机器学习平台编程模型演进之路

    摘要: 在云栖计算之旅第5期-大数据与人工智能大会上,来自阿里云大数据事业部的九丰分享了<PAI分布式机器学习平台编程模型演进之路>.他主要介绍了在集团中使用机器学习解决大数据问题时如何通 ...

  9. ML:机器学习中与模型相关的一些常见的判断逻辑(根据自调整阈值计算阳性率)

    ML:机器学习中与模型相关的一些常见的判断逻辑(根据自调整阈值计算阳性率) 目录 机器学习中与模型相关的一些常见的判断逻辑(根据自调整阈值计算阳性率)

最新文章

  1. Tarjan无向图连通性
  2. mingw控制台中文乱码
  3. 皮一皮:年轻人真会玩...
  4. 如何建立你自己的Docker镜像
  5. 5,6,7_InfluxDB数据保留策略,InfluxDB的关键概念,带有时区进行查询示例
  6. Android开发之AlertDialog设置左右边距的间接办法
  7. NOIP2019 Emiya家今天的饭
  8. 为USB网卡(水星MW150US)编译树莓派上的驱动
  9. 《天天数学》连载35:二月四日
  10. Docker环境搭建,K8s
  11. 钉钉小程序使用vant_高效钉钉小程序开发丨详解Hello,dingtalk
  12. d soft php package,让程序飞起来之 Laravel OPcache Package
  13. poj 3628 Bookshelf 2 01背包!!!
  14. python 小达人_python小白入门基础(五:字符串)
  15. 基于CNN的人脸相似度检测
  16. 百度编辑器ueditor-在线图片管理,想修改下默认的排序管理
  17. 怎么做照片拼图?这几个方法挺靠谱
  18. 两耳不闻窗外事 一心只读圣贤书
  19. Pr动态图形模板Mogrt导入失败 Mogrt is Corrupt 解决方法 Motion Graphics Templates is corrupt.
  20. Ctrl c 复制html,一键复制粘贴(用热键代替Ctrl+X、Ctrl+C、Ctrl+V)

热门文章

  1. ueditor html中使用方法,vue集成百度UEditor富文本编辑器使用教程
  2. java栈 类 堆_详细介绍Java中的堆和栈
  3. 牵引力教育就业数据显示:很多大学毕业就等于失业?
  4. Emacs之LaTeX环境配置及效果展示
  5. 又一波你可能不知道的 Linux 命令行网络监控工具
  6. [高中作文赏析]相约
  7. win8: 清除iframe的缓存
  8. BGP no-export
  9. SQL终极优化(包括很多非索引方面的优化和原理)
  10. C#多线程学习(五) 多线程的自动管理(定时器) (转载系列)——继续搜索引擎研究...