在Spark中使用xgboost训练模型

2018-11-08  本文已影响0人  DDDDavid

spark上运行xgboost模型,具有内存运行,速度更快,减少数据传输的优势。

1、交互模式测试

使用spark运行xgboost首先需要下载依赖的jar包,下载地址https://github.com/criteo-forks/xgboost-jars/releases

主要需要xgboost4j-0.72-criteo-20180518_2.10-linux.jar

在堡垒机中使用命令 spark-shell --jars xgboost*.jar,进入交互模式,可以编写代码进行测试。

退出shell环境命令 :quit

2、数据准备

xgboost模型需要将数据整理为libsvm格式。

本地可以使用python脚本将数据转化。

3、编写并运行程序

首先需要引入依赖

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包后执行

执行命令:spark-submit --class com.jd.iss.xgb.xgb_slass --jars xgboost4j-linux.jar,xgboost4j-spark.jar xgboostDemo.jar

--class是指定义执行的类名

--jars是引入依赖的jar包,因为线上环境一般没有xgboost的jar包

7、查看任务日志:

yarn logs --applicationId application_XXXX_XXXX >res.log

8、一些xgboost4j的函数说明

8、一些xgboost4j的函数说明

//模型训练:
booster = XGBoost.train(trainMax, paramMap, numRound, watches.toMap)
//获取特征重要性
val FeatureWeight=booster.getFeatureScore()

//决策树结果
val model_dump = booster.getModelDump()
//预测
val PredictResult = booster.predict(testMax).flatMap(x=>x)
注意:预测函数后要接 flatMap(x=>x)

上一篇下一篇

猜你喜欢

热点阅读