【问题标题】:How to plot ROC curve and precision-recall curve from BinaryClassificationMetrics如何从 BinaryClassificationMetrics 绘制 ROC 曲线和精确召回曲线
【发布时间】:2016-11-07 13:25:57
【问题描述】:

我试图在图中绘制 ROC 曲线和 Precision-Recall 曲线。这些点是从 Spark Mllib BinaryClassificationMetrics 生成的。通过关注以下 Spark https://spark.apache.org/docs/latest/mllib-evaluation-metrics.html

[(1.0,1.0), (0.0,0.4444444444444444)] Precision
[(1.0,1.0), (0.0,1.0)] Recall
[(1.0,1.0), (0.0,0.6153846153846153)] - F1Measure    
[(0.0,1.0), (1.0,1.0), (1.0,0.4444444444444444)]- Precision-Recall curve
[(0.0,0.0), (0.0,1.0), (1.0,1.0), (1.0,1.0)] - ROC curve

【问题讨论】:

    标签: apache-spark machine-learning apache-spark-mllib


    【解决方案1】:

    看来您遇到的问题与我遇到的类似。您需要将参数翻转到 Metrics 构造函数,或者可能传入概率而不是预测。因此,例如,如果您使用BinaryClassificationMetricsRandomForestClassifier,则根据this page(在输出下)存在“预测”和“概率”。

    然后初始化您的指标:

        new BinaryClassificationMetrics(predictionsWithResponse
          .select(col("probability"),col("myLabel"))
          .rdd.map(r=>(r.getAs[DenseVector](0)(1),r.getDouble(1))))
    

    使用 DenseVector 调用来提取 1 类的概率。

    至于实际的绘图,这取决于你(许多很好的工具),但至少你会在曲线上得到超过 1 个点(除了端点)。

    如果不清楚:

    metrics.roc().collect() 将为您提供 ROC 曲线的数据:Tuples of: (false positive rate, true positive rate)。

    【讨论】:

      猜你喜欢
      • 2020-04-18
      • 2016-01-22
      • 2017-09-21
      • 2021-09-13
      • 1970-01-01
      • 2016-06-11
      • 2018-12-27
      • 1970-01-01
      • 2020-01-01
      相关资源
      最近更新 更多