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.dmatrixobjective = "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
發佈了45 篇原創文章 · 獲贊 62 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章