日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spark上运行xgboost-scala接口

發布時間:2024/1/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spark上运行xgboost-scala接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述
xgboost可以在spark上運行,我用的xgboost的版本是0.7的版本,目前只支持spark2.0以上版本上運行,

編譯好jar包,加載到maven倉庫里面去:

mvn install:install-file -Dfile=xgboost4j-spark-0.7-jar-with-dependencies.jar -DgroupId=ml.dmlc -DartifactId=xgboost4j-spark -Dversion=0.7 -Dpackaging=jar


添加依賴:
<dependency>
?? ??? ??? ?<groupId>ml.dmlc</groupId>
?? ??? ??? ?<artifactId>xgboost4j-spark</artifactId>
?? ??? ??? ?<version>0.7</version>
?? ??? ?</dependency>
?? ??? ?<dependency>
?? ??? ??? ?<groupId>org.apache.spark</groupId>
?? ??? ??? ?<artifactId>spark-core_2.10</artifactId>
?? ??? ??? ?<version>2.0.0</version>
?? ??? ?</dependency>
?? ??? ?<dependency>
?? ??? ??? ?<groupId>org.apache.spark</groupId>
?? ??? ??? ?<artifactId>spark-mllib_2.10</artifactId>
?? ??? ??? ?<version>2.0.0</version>
?? ??? ?</dependency>
?? ?</dependencies>

RDD接口:

package com.meituan.spark_xgboost
import org.apache.log4j.{ Level, Logger }
import org.apache.spark.{ SparkConf, SparkContext }
import ml.dmlc.xgboost4j.scala.spark.XGBoost
import org.apache.spark.sql.{ SparkSession, Row }
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.ml.feature.LabeledPoint
import org.apache.spark.ml.linalg.Vectors
object XgboostR {
?
?
? def main(args: Array[String]): Unit = {
? ? Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
? ? Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
? ? val spark = SparkSession.builder.master("local").appName("example").
? ? ? config("spark.sql.warehouse.dir", s"file:///Users/shuubiasahi/Documents/spark-warehouse").
? ? ? config("spark.sql.shuffle.partitions", "20").getOrCreate()
? ? spark.conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
? ? ? val path = "/Users/shuubiasahi/Documents/workspace/xgboost/demo/data/"
? val trainString = "agaricus.txt.train"
? val testString = "agaricus.txt.test"
? ? val train = MLUtils.loadLibSVMFile(spark.sparkContext, path + trainString)
? ? val test = MLUtils.loadLibSVMFile(spark.sparkContext, path + testString)
? ? val traindata = train.map { x =>
? ? ? val f = x.features.toArray
? ? ? val v = x.label
? ? ? LabeledPoint(v, Vectors.dense(f))
? ? }
? ? val testdata = test.map { x =>
? ? ? val f = x.features.toArray
? ? ? val v = x.label
? ? ? ?Vectors.dense(f)
? ? }
? ??
?
? ? val numRound = 15
? ??
? ? ?//"objective" -> "reg:linear", //定義學習任務及相應的學習目標
? ? ? //"eval_metric" -> "rmse", //校驗數據所需要的評價指標 ?用于做回歸
? ??
? ? val paramMap = List(
? ? ? "eta" -> 1f,
? ? ? "max_depth" ->5, //數的最大深度。缺省值為6 ,取值范圍為:[1,∞]?
? ? ? "silent" -> 1, //取0時表示打印出運行時信息,取1時表示以緘默方式運行,不打印運行時信息。缺省值為0?
? ? ? "objective" -> "binary:logistic", //定義學習任務及相應的學習目標
? ? ? "lambda"->2.5,
? ? ? "nthread" -> 1 //XGBoost運行時的線程數。缺省值是當前系統可以獲得的最大線程數
? ? ? ).toMap
? ? println(paramMap)
? ??
?
? ? val model = XGBoost.trainWithRDD(traindata, paramMap, numRound, 55, null, null, useExternalMemory = false, Float.NaN)
? ? print("sucess")
?
? ? val result=model.predict(testdata)
? ? result.take(10).foreach(println)
? ? spark.stop();
? ?
? }
?
}


DataFrame接口:
package com.meituan.spark_xgboost
import org.apache.log4j.{ Level, Logger }
import org.apache.spark.{ SparkConf, SparkContext }
import ml.dmlc.xgboost4j.scala.spark.XGBoost
import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics
import org.apache.spark.sql.{ SparkSession, Row }
object XgboostD {
? def main(args: Array[String]): Unit = {
? ? Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
? ? Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
? ? val spark = SparkSession.builder.master("local").appName("example").
? ? ? config("spark.sql.warehouse.dir", s"file:///Users/shuubiasahi/Documents/spark-warehouse").
? ? ? config("spark.sql.shuffle.partitions", "20").getOrCreate()
? ? spark.conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
? ? val path = "/Users/shuubiasahi/Documents/workspace/xgboost/demo/data/"
? ? val trainString = "agaricus.txt.train"
? ? val testString = "agaricus.txt.test"
?
? ? val train = spark.read.format("libsvm").load(path + trainString).toDF("label", "feature")
?
? ? val test = spark.read.format("libsvm").load(path + testString).toDF("label", "feature")
?
? ? val numRound = 15
?
? ? //"objective" -> "reg:linear", //定義學習任務及相應的學習目標
? ? //"eval_metric" -> "rmse", //校驗數據所需要的評價指標 ?用于做回歸
?
? ? val paramMap = List(
? ? ? "eta" -> 1f,
? ? ? "max_depth" -> 5, //數的最大深度。缺省值為6 ,取值范圍為:[1,∞]?
? ? ? "silent" -> 1, //取0時表示打印出運行時信息,取1時表示以緘默方式運行,不打印運行時信息。缺省值為0?
? ? ? "objective" -> "binary:logistic", //定義學習任務及相應的學習目標
? ? ? "lambda" -> 2.5,
? ? ? "nthread" -> 1 //XGBoost運行時的線程數。缺省值是當前系統可以獲得的最大線程數
? ? ? ).toMap
? ? val model = XGBoost.trainWithDataFrame(train, paramMap, numRound, 45, obj = null, eval = null, useExternalMemory = false, Float.NaN, "feature", "label")
? ? val predict = model.transform(test)
?
? ? val scoreAndLabels = predict.select(model.getPredictionCol, model.getLabelCol)
? ? ? .rdd
? ? ? .map { case Row(score: Double, label: Double) => (score, label) }
?
? ? //get the auc
? ? val metric = new BinaryClassificationMetrics(scoreAndLabels)
? ? val auc = metric.areaUnderROC()
? ? println("auc:" + auc)
?
? }
?
}

---------------------?
作者:旭旭_哥?
來源:CSDN?
原文:https://blog.csdn.net/luoyexuge/article/details/71422270?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的spark上运行xgboost-scala接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。