我正在使用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()