XGBoost模型文件转化为PMML

运用java包和指令行讲XGBoost模型转化为PMML通用模型文件。

前期准备
  1. 下载jpmml-xgboost, https://github.com/jpmml/jpmml-xgboost/archive/master.zip ;
  2. 安装java1.7或以上版本;
  3. 安装 Apache Maven。

配置环境
在终端进入项目的根目录,执行:
  mvn clean install
这一步是根据项目目录中的pom.xml文件新建一个可执行的java包  target/converter-executable-1.1-SNAPSHOT.jar。

使用步骤
转化过程可以概括为以下三步:
  1. 运用XGBoost训练模型;
  2. 保存模型及其相关的特征信息;
  3. 运用JPMML-XGBoost转化命令行将第二步中的两个文件转化为一个pmml格式的文件。

训练模型并保存为本地文件
使用 mtcars 数据,应用R包xgboost训练一个线性模型。代码如下:
library("xgboost")
source("src/main/R/util.R")
data(mtcars)

# Convert selected columns from numeric datatype to integer or factor datatypes
mtcars$cyl = as.integer(mtcars$cyl)
mtcars$vs = as.factor(mtcars$vs)
mtcars$am = as.factor(mtcars$am)
mtcars$gear = as.integer(mtcars$gear)
mtcars$carb = as.integer(mtcars$carb)

mpg_y = mtcars[, 1]
mpg_X = mtcars[, 2:ncol(mtcars)]

# Generate DMatrix file
mpg.dmatrix = genDMatrix(mpg_ympg_X"xgboost.svm # genDMatrix是 在util.R中定义的

# Generate feature map file
mpg.fmap   =  genFMap( mpg_X "xgboost.fmap # genFMap是在util.R中定义的

set.seed( 31 )

# Train a linear regression model
mpg.xgb   =  xgboost( data   =   mpg.dmatrix objective   =   "reg:linear" nrounds   =   7 )

# Save the model in XGBoost proprietary binary format
xgb.save( mpg.xgb "xgboost.model" )

# Dump the model in text format
xgb.dump( mpg.xgb "xgboost.model.txt" fmap   =   "xgboost.fmap" )

模型转化为PMML文件
运用JPMML-XGBoost转化命令行将第二步中的两个文件 xgboost.model和 xgboost.fmap 转化为一个pmml格式的文件
java -jar target/converter-executable-1.1-SNAPSHOT.jar --model-input xgboost.model --fmap-input xgboost.fmap --target-name mpg --pmml-output xgboost.pmml

获取帮助详情
java -jar target/converter-executable-1.1-SNAPSHOT.jar --help

你可能感兴趣的:(XGBoost模型文件转化为PMML)