2017-11-17 1 views
0

에서 XGBoost4J 새로운 DMatrix에 내가는 스파크

org.apache.spark.rdd.RDD[ml.dmlc.xgboost4j.LabeledPoint] 

데이터를 교육 DMatrix 필요 XGBoost.train 기능과 같은 ml.dmlc.xgboost4j.LabeledPoint 인 A 원소 RDD을, 얼마나, 나는 체크 아웃 xgboost 소스 코드와 DMatrix에 대한 생성자 함수를 찾고, DMatrix (Iterator iter, String cacheInfo)를 좋아합니다. DMatrix API

그러나 DMatrix 용 Iterator를 구성 할 생각이 없습니다.

모든 솔루션?

이외 : spark1.5에서 xgboost4j -v0.5 만 사용할 수 있으므로 새 버전의 일부 기능을 사용할 수 없습니다.

당신이 xgboost의 GitHub의에 사용 예를 찾을 수 있습니다
+0

새로운 DMatrix은 제안되지 않는다 매회 spark-sql 사용 – user3151261

답변

0

: https://github.com/dmlc/xgboost/blob/master/jvm-packages/xgboost4j-example/src/main/scala/ml/dmlc/xgboost4j/scala/example/spark/SparkWithRDD.scala

관련 부분은 다음과 같습니다

import org.apache.spark.ml.feature.{LabeledPoint => MLLabeledPoint} 
import org.apache.spark.ml.linalg.{DenseVector => MLDenseVector} 

val trainRDD = MLUtils.loadLibSVMFile(sc, inputTrainPath).map(lp => 
     MLLabeledPoint(lp.label, new MLDenseVector(lp.features.toArray))) 
    val testSet = MLUtils.loadLibSVMFile(sc, inputTestPath) 
     .map(lp => new MLDenseVector(lp.features.toArray)) 
    // training parameters 
    val paramMap = List(
     "eta" -> 0.1f, 
     "max_depth" -> 2, 
     "objective" -> "binary:logistic").toMap 
    val xgboostModel = XGBoost.trainWithRDD(trainRDD, paramMap, numRound, nWorkers = args(1).toInt, 
     useExternalMemory = true) 
    xgboostModel.predict(testSet, missingValue = Float.NaN) 
가 선택한 데이터를 저장하는 것이 편리 아니기 때문에 로컬 디스크 또는 HDFS에서
+0

MLUtils.loadLibSVMFile은 spark-SQL에 편리하지 않습니다. 매번 선택한 데이터를 HDFS에 저장하고 싶지 않습니다. – user3151261