我正在使用Spark 2 + Scala训练基于LogisticRegression的二进制分类模型,并且正在使用import org.apache.spark.ml.classification.LogisticRegression,它是Spark 2中的新ml API。但是,当我通过AUROC评估模型时,我没有找到方法使用概率(0-1中的两倍)代替二进制分类(0/1)。这以前是通过removeThreshold()实现的,但是在ml.LogisticRegression中我没有找到类似的方法。因此,有办法吗?

我正在使用的评估者是

val evaluator = new BinaryClassificationEvaluator()
  .setLabelCol("label")
  .setRawPredictionCol("rawPrediction")
  .setMetricName("areaUnderROC")
val auroc = evaluator.evaluate(predictions)`

最佳答案

如果您想获得非0/1输出的概率输出,请尝试以下操作:

import org.apache.spark.ml.classification.{BinaryLogisticRegressionSummary, LogisticRegression}
val lr = new LogisticRegression()
  .setMaxIter(100)
  .setRegParam(0.3)
val lrModel = lr.fit(trainData)
val summary = lrModel.summary
summary.predictions.select("probability").show()

10-08 04:57