运用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)]
# 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
转载请注明原文地址: https://ju.6miu.com/read-1296198.html