xgboost导出为pmml模型包

机器学习模型使用时需要导出后部署在线使用,有些项目需要pmml格式,两种方法,第二种成本更低。

一、什么是PMML

PMML(Predictive Model Markup Language):预测模型标记语言,它用XML格式来描述生成的机器学习模型,是目前表示机器学习模型的实际标准。

若要将在Python中训练好的模型部署到生产上时,可以使用目标环境解析PMML文件的库来加载模型,并做预测。

二、如何导出为PMML

1. sklearn2pmml

这个方法需要安装java

import xgboost as xgb
from sklearn2pmml import sklearn2pmml, make_pmml_pipeline
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载数据集,这里以Iris为例
data = load_iris()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 使用XGBoost的Scikit-Learn接口训练模型
model = xgb.XGBClassifier(objective='multi:softmax', num_class=3)
model.fit(X_train, y_train)

# 创建PMML兼容的pipeline
pipeline = make_pmml_pipeline(model)

# 导出模型到PMML文件
sklearn2pmml(pipeline, "XGBoost.pmml", with_repr = True)

报错:RuntimeError: Java is not installed, or the Java executable is not on system path

解决办法

遇到这个错误是因为sklearn2pmml库在转换模型到PMML格式时依赖于Java,因为它内部使用了JPMML(Java PMML)库来执行转换过程。如果你没有安装Java或者Java的路径没有被正确配置到系统环境变量中,就会导致这个错误。

解决办法:
1.安装Java: 首先,确保你的系统中安装了Java。你可以从Oracle官网下载适合你操作系统的Java Development Kit (JDK)。对于大多数开发用途,选择最新的长期支持(LTS)版本即可。
2.配置Java环境变量: 安装Java后,需要确保Java的可执行文件(通常是java和javac)所在的目录被添加到了系统的PATH环境变量中。这样,你就可以在任何命令行窗口中直接运行Java命令。

  • 对于Windows:

    • 右键点击“此电脑”或“我的电脑”,选择“属性”。 点击“高级系统设置”。
    • 在“系统属性”对话框中点击“环境变量”按钮。
    • 在“系统变量”区域找到并选择“Path”,然后点击“编辑”。
    • 添加JDK的bin目录路径(例如,C:\Program Files\Java\jdk-版本号\bin)
    • 到变量值中,使用分号;与其他路径分隔。
  • 对于Linux或macOS:

    • 打开终端。
    • 编辑.bashrc或.bash_profile(对于macOS Catalina及以上版本,可能需要编辑.zshrc),使用文本编辑器如nano或vim。
    • 在文件末尾添加以下行(替换/path/to/jdk为实际的JDK安装路径):
            export JAVA_HOME=/path/to/jdk
            export PATH=$JAVA_HOME/bin:$PATH
    
    • 保存文件并关闭编辑器,然后运行source ~/.bashrc或source ~/.bash_profile(或.zshrc)使更改生效。
    • 验证Java安装: 重新打开命令行窗口,运行命令java -version,如果看到Java版本信息输出,则说明Java已正确安装并且环境变量配置成功。

完成以上步骤后,你应该能够使用sklearn2pmml成功地将XGBoost模型转换为、PMML格式了。如果问题仍然存在,可能需要检查是否有其他依赖问题或考虑使用nyoka作为替代方案。

2. nyoka

这个方法不需要安装java

import xgboost as xgb
from sklearn2pmml import make_pmml_pipeline
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from nyoka import xgboost_to_pmml

# 加载数据集,这里以Iris为例
data = load_iris()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 使用XGBoost的Scikit-Learn接口训练模型
model = xgb.XGBClassifier(objective='multi:softmax', num_class=3)
model.fit(X_train, y_train)

# 创建PMML兼容的pipeline
pipeline = make_pmml_pipeline(model)

# 假设model是之前训练好的xgboost.Booster对象
xgboost_to_pmml(pipeline=pipeline, col_names=data.feature_names, target_name='species', pmml_f_name="XGBoost.pmml")

相关推荐

  1. xgboost导出pmml模型

    2024-06-11 08:52:06       7 阅读
  2. 机器学习模型保存和导出pmml文件(python代码)

    2024-06-11 08:52:06       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-11 08:52:06       8 阅读
  2. 【Python教程】压缩PDF文件大小

    2024-06-11 08:52:06       9 阅读
  3. 通过文章id递归查询所有评论(xml)

    2024-06-11 08:52:06       10 阅读

热门阅读

  1. 回溯算法练习题(2024/6/10)

    2024-06-11 08:52:06       4 阅读
  2. 28.找零

    28.找零

    2024-06-11 08:52:06      6 阅读
  3. Kubernetes学习总结知识点汇总

    2024-06-11 08:52:06       9 阅读
  4. hw meta10 adb back up DCIM

    2024-06-11 08:52:06       8 阅读
  5. 【Spring Boot】过滤敏感词的两种实现

    2024-06-11 08:52:06       6 阅读
  6. 鼠标侧键映射虚拟桌面切换 —— Win11

    2024-06-11 08:52:06       5 阅读
  7. YOLOv5的predict.py逐句讲解(学习笔记)

    2024-06-11 08:52:06       8 阅读
  8. 递归

    递归

    2024-06-11 08:52:06      7 阅读
  9. OpenZeppelin Ownable合约 怎么使用

    2024-06-11 08:52:06       7 阅读