首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在BinaryClassificationMetrics中绘制ROC曲线和查准率曲线

如何在BinaryClassificationMetrics中绘制ROC曲线和查准率曲线
EN

Stack Overflow用户
提问于 2016-07-06 00:06:56
回答 1查看 9.1K关注 0票数 6

我试着在图中绘制ROC曲线和精确召回曲线。这些点是从Spark Mllib BinaryClassificationMetrics生成的。通过遵循下面的Spark https://spark.apache.org/docs/latest/mllib-evaluation-metrics.html

代码语言:javascript
复制
[(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
EN

回答 1

Stack Overflow用户

发布于 2016-09-28 12:03:52

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

然后初始化您的指标,如下所示:

代码语言:javascript
复制
    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曲线的数据:元组:(假阳性率,真阳性率)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38207990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档