【问题标题】:Spark 2 logisticregression remove thresholdSpark 2 逻辑回归删除阈值
【发布时间】:2017-10-22 18:34:32
【问题描述】:

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

【问题讨论】:

  • 实际上看起来如果setRawPredictionCol为概率,它应该使用概率而不是预测。有人可以确认吗?

标签: scala apache-spark machine-learning distributed-computing


【解决方案1】:

如果你想得到 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()

【讨论】:

  • 这样,测试数据在哪里?
【解决方案2】:
import org.apache.spark.ml.classification.{BinaryLogisticRegressionSummary,
LogisticRegression}
val lr = new LogisticRegression().setMaxIter(100).setRegParam(0.3)
val lrModel = lr.fit(trainData)  
val trainingSummary = lrModel.summary
val predictions = lrModel.transform(test)
predictions.select("label", "probability").show()

【讨论】:

    猜你喜欢
    • 2016-03-24
    • 2017-11-20
    • 2018-05-22
    • 2015-04-27
    • 2018-04-29
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    相关资源
    最近更新 更多