spark上運(yùn)行xgboost模型,具有內(nèi)存運(yùn)行,速度更快,減少數(shù)據(jù)傳輸?shù)膬?yōu)勢。
1、交互模式測試
使用spark運(yùn)行xgboost首先需要下載依賴的jar包,下載地址https://github.com/criteo-forks/xgboost-jars/releases,
主要需要xgboost4j-0.72-criteo-20180518_2.10-linux.jar
在堡壘機(jī)中使用命令 spark-shell --jars xgboost*.jar,進(jìn)入交互模式,可以編寫代碼進(jìn)行測試。
退出shell環(huán)境命令 :quit
2、數(shù)據(jù)準(zhǔn)備
xgboost模型需要將數(shù)據(jù)整理為libsvm格式。
本地可以使用python腳本將數(shù)據(jù)轉(zhuǎn)化。
3、編寫并運(yùn)行程序
首先需要引入依賴
import ml.dmlc.xgboost4j.scala.{DMatrix, XGBoost}
4、IDEA
在IDEA中編寫scala程序,需要定義好類名。
修改pom.xml文件,建立依賴。
<dependency>
<groupId>me.lyh</groupId>
<artifactId>xgboost4j</artifactId>
<version>0.71-20180420-230cb9b7</version>
</dependency>
5、maven打包命令:
mvn clean package -Pcluster
說明:clean是消除其他文件,package是打包,-Pcluster是指將依賴打包
6、生成jar包后執(zhí)行
執(zhí)行命令:spark-submit --class com.jd.iss.xgb.xgb_slass --jars xgboost4j-linux.jar,xgboost4j-spark.jar xgboostDemo.jar
--class是指定義執(zhí)行的類名
--jars是引入依賴的jar包,因為線上環(huán)境一般沒有xgboost的jar包
7、查看任務(wù)日志:
yarn logs --applicationId application_XXXX_XXXX >res.log
8、一些xgboost4j的函數(shù)說明
8、一些xgboost4j的函數(shù)說明
//模型訓(xùn)練:
booster = XGBoost.train(trainMax, paramMap, numRound, watches.toMap)
//獲取特征重要性
val FeatureWeight=booster.getFeatureScore()
//決策樹結(jié)果
val model_dump = booster.getModelDump()
//預(yù)測
val PredictResult = booster.predict(testMax).flatMap(x=>x)
注意:預(yù)測函數(shù)后要接 flatMap(x=>x)