Python之pypmml:pypmml的简介、安装、使用方法之详细攻略

目录

pypmml的简介

1、PMML优点

2、PMML的缺点

pypmml的安装

pypmml的使用方法

1、基础案例

2、利用XGBoost模型对Iris数据训练并转为PMML文件,载入并实现预测


pypmml的简介

pypmml是一个python pmml评分库,它实际上是用于PMML4S的python api。pmml经常是跨平台给java调用,借用PMML模型进行上线测试,即采用Python语言做模型训练,线上采用 Java 载入模型做预测。离线部分负责模型训练和导出模型,线上导入模型并且做预测。当然特征工程部分主要做特征变换,例如 分桶,单值编码,归一化等。
       预测模型标记语言PMML(Predictive Model Markup Language)是一套与平台和环境无关的模型表示语言,是目前表示机器学习模型的实际标准。PMML是一种可以呈现预测分析模型的事实标准语言。标准东西的好处就是,各种开发语言都可以使用相应的包,把模型文件转成这种中间格式,而另外一种开发语言,可以使用相应的包导入该文件做线上预测。
         从2001年发布的PMML1.1,到2019年最新4.4,PMML标准已经由最初的6个模型扩展到了17个模型,并且提供了挖掘模型(Mining Model)来组合多模型。作为一个开放的成熟标准,PMML由数据挖掘组织DMG(Data Mining Group)开发和维护,经过十几年的发展,得到了广泛的应用,有超过30家厂商和开源项目(包括SAS,IBM SPSS,KNIME,RapidMiner等主流厂商)在它们的数据挖掘分析产品中支持并应用PMML,
       PMML是一套基于XML的标准,通过 XML Schema 定义了使用的元素和属性,主要由以下核心部分组成:

  • 数据字典(Data Dictionary),描述输入数据。
  • 数据转换(Transformation Dictionary和Local Transformations),应用在输入数据字段上生成新的派生字段。
  • 模型定义 (Model),每种模型类型有自己的定义。
  • 输出(Output),指定模型输出结果。

1、PMML优点

  • 平台无关性。PMML可以让模型部署环境脱离开发环境,实现跨平台部署,是PMML区别于其他模型部署方法最大的优点。比如使用Python建立的模型,导出PMML后可以部署在Java生产环境中。
  • 互操作性。这就是标准协议的最大优势,实现了兼容PMML的预测程序可以读取其他应用导出的标准PMML模型。
  • 广泛支持性。已取得30余家厂商和开源项目的支持,通过已有的多个开源库,很多重量级流行的开源数据挖掘模型都可以转换成PMML。
  • 可读性。PMML模型是一个基于XML的文本文件,使用任意的文本编辑器就可以打开并查看文件内容,比二进制序列化文件更安全可靠。

2、PMML的缺点

  • 数据处理操作有限。支持不了所有的数据预处理和后处理操作。虽然PMML已经支持了几乎所有的标准数据处理方式,但是对用户一些自定义操作,还缺乏有效的支持,很难放到PMML中。
  • 模型类型支持有限。特别是缺乏对深度学习模型的支持,PMML下一版5.0会添加对深度模型的支持,目前Nyoka可以支持Keras等深度模型,但生成的是扩展的PMML模型。
  • PMML是一个松散的规范标准,有的厂商生成的PMML有可能不太符合标准定义的Schema,并且PMML规范允许厂商添加自己的扩展,这些都对使用这些模型造成了一定障碍。

参考文章:https://zhuanlan.zhihu.com/p/79197337

pypmml的安装

pip install pypmml
pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple pypmml

pypmml的使用方法

1、基础案例

heart_data = pandas.read_csv("heart.csv")
#用Mapper定义特征工程
mapper = DataFrameMapper([(['sbp'], MinMaxScaler()),(['tobacco'], MinMaxScaler()),('ldl', None),('adiposity', None),(['famhist'], LabelBinarizer()),('typea', None),('obesity', None),('alcohol', None),(['age'], FunctionTransformer(np.log)),
]) #用pipeline定义使用的模型,特征工程等
pipeline = PMMLPipeline([('mapper', mapper),("classifier", linear_model.LinearRegression())
])pipeline.fit(heart_data[heart_data.columns.difference(["chd"])], heart_data["chd"])
#导出模型文件
sklearn2pmml(pipeline, "lrHeart.xml", with_repr = True)

2、利用XGBoost模型对Iris数据训练并转为PMML文件,载入并实现预测

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
import pandas as pd
from xgboost import XGBClassifierseed = 123iris = datasets.load_iris()
target = 'Species'
features = iris.feature_names
iris_df = pd.DataFrame(iris.data, columns=features)
iris_df[target] = iris.targetX, y = iris_df[features], iris_df[target]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=seed)pipeline = Pipeline([('scaling', StandardScaler()), ('xgb', XGBClassifier(n_estimators=5, seed=seed))
])pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
y_pred_proba = pipeline.predict_proba(X_test)from nyoka import xgboost_to_pmml
xgboost_to_pmml(pipeline, features, target, "xgb-iris.pmml")from pypmml import Model
model = Model.load("xgb-iris.pmml")
model.predict(X_test)

Python之pypmml:pypmml的简介、安装、使用方法之详细攻略相关推荐

  1. Python语言学习:Python常用自带库(imageio、pickle)简介、使用方法之详细攻略

    Python语言学习:Python常用自带库(imageio.pickle)简介.使用方法之详细攻略 目录 imageio简介及其常见使用方法 pickle简介及其常见使用方法 简介 使用方法 简介及 ...

  2. Python编程语言学习:包导入和模块搜索路径简介、使用方法之详细攻略

    Python编程语言学习:包导入和模块搜索路径简介.使用方法之详细攻略 目录 包导入和模块搜索路径简介 1.Pyhon搜索模块路径的机制 2.自定义配置搜索路径

  3. Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略 目录 sklearn.preprocessing中的Stand ...

  4. Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略 目录 sklearn中的train_test_split函数的简介 train_tes ...

  5. Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略 目录 sklearn中的RobustScaler 函数的简介及使用方法 sklearn中的R ...

  6. Python:numpy库中的一些函数简介、使用方法之详细攻略

    Python:numpy库中的一些函数简介.使用方法之详细攻略 目录 numpy库中的一些函数简介.使用方法 1.np.concatenate() 1.1.函数案例 1.2.函数用法 numpy库中的 ...

  7. Computer:互联网开放平台项目知识补充之开发-运维-网络-网关等术语(DMZ、负载均衡、F5、Nginx、容器)的简介、使用方法之详细攻略

    Computer:互联网开放平台项目知识补充之开发-运维-网络-网关等术语(DMZ.负载均衡.F5.Nginx.容器)的简介.使用方法之详细攻略 目录 DMZ(隔离区)的简介及其使用方法 1.DMZ区 ...

  8. Py之matplotlib.pyplot:matplotlib.pyplot的plt.legend函数的简介、使用方法之详细攻略

    Py之matplotlib.pyplot:matplotlib.pyplot的plt.legend函数的简介.使用方法之详细攻略 目录 matplotlib.pyplot的plt.legend函数的简 ...

  9. BigData之Hive beeline:beeline的简介、使用方法之详细攻略

    BigData之Hive beeline:beeline的简介.使用方法之详细攻略 目录 beeline的简介 beeline的使用方法 1.命令行参数解释 2.beeline的输出格式 2.1.ta ...

  10. ML之sklearn:sklearn.linear_mode中的LogisticRegression函数的简介、使用方法之详细攻略

    ML之sklearn:sklearn.linear_mode中的LogisticRegression函数的简介.使用方法之详细攻略 目录 sklearn.linear_mode中的LogisticRe ...

最新文章

  1. 单片机练习-RC-5红外遥控器程序及简单制造DIY PC遥控器
  2. IOS开发学习笔记(1)
  3. 使用ab(apachebench)进行压力测试
  4. 从草根到百万年薪程序员的十年风雨之路,使用指南
  5. 面向对象(二)——三大特性(封装、继承、多态)
  6. python中zip的使用_浅谈Python中的zip()与*zip()函数详解
  7. Linux中read命令的用法
  8. 【SPOJ COT2】Count on a tree II,树上莫队
  9. 【MyBatis】第一章 快速入门
  10. Linux GPIO键盘驱动开发记录_OMAPL138
  11. EF里查看/修改实体的当前值、原始值和数据库值
  12. 冯诺依曼体系结构与计算机基本组成
  13. (java毕业设计)基于java学生宿舍管理系统
  14. 故宫的首夜,一票难求,网站遭“围攻”宕机
  15. 被“自由行动祝福”环绕的战士 —— 微软实习之魔兽攻略版
  16. 【jq练习】基本选择器
  17. java 权限 部分截图
  18. VMware使用OVFTool导出Esxi 6.7.0版本中的虚拟机
  19. chrom浏览器flash_谷歌浏览器怎么打开flash_最新版chrome怎么开启flash-win7之家
  20. 模拟电子技术基础------单管共射放大电路

热门文章

  1. 5kyu Square sums (simple)
  2. python3 读取文本文件_python3文件的读写操作
  3. Google Maps和GIS开发资源收集
  4. 深度学习小技巧(二):如何保存和恢复scikit-learn训练的模型
  5. 如何建立拨号上网连接
  6. 机房收费--组合查询
  7. Django 3.1.5, CSRF verification failed. Request aborted.
  8. Docker+Jenkins+Nginx+Spring Boot 自动化部署项目
  9. Redis 6.0 新特性,多线程连环 13 问!
  10. 我为什么逃离无人车公司