运用java包和指令行讲XGBoost模型转化为PMML通用模型文件。
前期准备
- 下载jpmml-xgboost, https://github.com/jpmml/jpmml-xgboost/archive/master.zip ;
- 安装java1.7或以上版本;
- 安装 Apache Maven。
配置环境
在终端进入项目的根目录,执行:
mvn clean install
这一步是根据项目目录中的pom.xml文件新建一个可执行的java包
target/converter-executable-1.1-SNAPSHOT.jar。
使用步骤
转化过程可以概括为以下三步:
- 运用XGBoost训练模型;
- 保存模型及其相关的特征信息;
- 运用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)]
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" )
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_y, mpg_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