美文网首页
在Spark中使用xgboost训练模型

在Spark中使用xgboost训练模型

作者: DDDDavid | 来源:发表于2018-11-08 15:00 被阅读0次

    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)

    相关文章

      网友评论

          本文标题:在Spark中使用xgboost训练模型

          本文链接:https://www.haomeiwen.com/subject/wmjwxqtx.html