注:此方法必须用原生xgboost训练出的模型,需要.model文件和.fmap文件,后文会说到如何生成.fmap文件。
一、环境配置
1.首先需要下载jdk并将环境配置好,可参考:
jdk 下载 安装 环境变量配置(图文)步骤教程超详细 - 砰砰的猿 - 博客园 (cnblogs.com)
2.再将maven下载配置好,可参考:
maven的下载安装配置教程(详细图文) - 砰砰的猿 - 博客园 (cnblogs.com)
3.下载转换工具:
4.参考以下4、5步骤:
lightgbm模型保存为pmml文件,并加载_lightgbm pmml-CSDN博客
二、生成.model文件和.fmap文件
1.生成.model文件
xgb_model = xgb.train(param, dtrain, num_boost_round=400)
# 模型训练
xgb_model.save_model('xgb_model.model')
# 保存为.model文件
2.生成.fmap文件,参考借鉴:
如何画XGBoost里面的决策树 - 知乎 (zhihu.com)
def ceate_feature_map(features):
outfile = open('xgb.fmap', 'w')
i = 0
for feat in features:
outfile.write('{0}\t{1}\tq\n'.format(i, feat))
i = i + 1
outfile.close()
ceate_feature_map(train_data.columns)#特征名列表
注:我发现.model文件好像无法保存模型的特征名称,.fmap文件能用来保存模型特征名称文件,文件打开后的格式如下:
中间就是自定义的特征名称了
三、转为.pmml文件
1.把.model文件和.fmap文件放入target目录下,生成的.pmml文件默认在此目录下
2.转到target目录下输入命令:
java -jar "E:\jpmml-xgboost-master\jpmml-xgboost-master\pmml-xgboost-example\target\pmml-xgboost-example-executable-1.8-SNAPSHOT.jar" --model-input xgb_model.model --fmap-input xgb.fmap --pmml-output xgb_model.pmml
参考:
xgb和lgb模型文件转pmml环境配置及步骤_lightgbm pmml-CSDN博客
四、模型加载
1.下载所需要的python模块
pip install sklearn2pmml -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pypmml -i https://pypi.tuna.tsinghua.edu.cn/simple
2.模型加载
from sklearn2pmml import PMMLPipeline,sklearn2pmml
from pypmml import Model
m = Model.fromFile('xgb_model.pmml')