spark上運(yùn)行xgboost模型,具有內(nèi)存運(yùn)行,速度更快焦影,減少數(shù)據(jù)傳輸?shù)膬?yōu)勢(shì)。
1封断、交互模式測(cè)試
使用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)行測(cè)試衣陶。
退出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
說(shuō)明: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包,因?yàn)榫€上環(huán)境一般沒(méi)有xgboost的jar包
7荤堪、查看任務(wù)日志:
yarn logs --applicationId application_XXXX_XXXX >res.log
8合陵、一些xgboost4j的函數(shù)說(shuō)明
8枢赔、一些xgboost4j的函數(shù)說(shuō)明
//模型訓(xùn)練:
booster = XGBoost.train(trainMax, paramMap, numRound, watches.toMap)
//獲取特征重要性
val FeatureWeight=booster.getFeatureScore()
//決策樹結(jié)果
val model_dump = booster.getModelDump()
//預(yù)測(cè)
val PredictResult = booster.predict(testMax).flatMap(x=>x)
注意:預(yù)測(cè)函數(shù)后要接 flatMap(x=>x)