【发布时间】:2020-01-21 02:41:06
【问题描述】:
我正在训练并保存一个 XGBoost 模型,如下所示:
XGBoost 0.82 版
Spark 版本 2.4.2
获取模型(调用训练函数)
def getModel(trainingData: DataFrame): PipelineModel = {
val pipelineModel = train(trainingData)
if (modelPathToSave != "") {
pipelineModel.write.overwrite().save(modelPathToSave)
println(f"Saved model to $modelPathToSave")
}
pipelineModel
}
火车模型
def train(trainingData: DataFrame): PipelineModel = {
val nh = new NullHandler()
.setCols(hackyEncode(featureList))
.setMethod("fill")
val va = new VectorAssembler()
.setInputCols(hackyDecode(nh.getCols).toArray)
.setOutputCol(featuresCol)
val xgb = new XGBoostClassifier()
.setLabelCol("label")
.setFeaturesCol("features")
.setEta(0.3)
.setMaxDepth(8)
.setObjective("binary:logistic")
.setEvalMetric("auc")
.setScalePosWeight(9)
val pipeline = new Pipeline()
.setStages(Array[PipelineStage](nh, va, xgb))
pipeline.fit(trainingData)
}
但是我得到了这个错误:
Exception in thread "main" java.lang.NoSuchMethodError: shaded.json4s.jackson.JsonMethods$.parse(Lshaded/json4s/JsonInput;Z)Lshaded/json4s/JsonAST$JValue;
at ml.dmlc.xgboost4j.scala.spark.params.DefaultXGBoostParamsWriter$$anonfun$1$$anonfun$3.apply(DefaultXGBoostParamsWriter.scala:73)
at ml.dmlc.xgboost4j.scala.spark.params.DefaultXGBoostParamsWriter$$anonfun$1$$anonfun$3.apply(DefaultXGBoostParamsWriter.scala:71)
尽管在我的build.sbt 文件中有json4s。
"org.json4s" %% "json4s-native" % "3.5.1",
"org.json4s" %% "json4s-jackson" % "3.6.6",
有人可以帮忙吗?
【问题讨论】:
标签: scala apache-spark apache-spark-mllib xgboost json4s