apache-spark - 如何从 BinaryClassificationMetrics 绘制 ROC 曲线和精确召回曲线

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

我试图在图表中绘制 ROC 曲线和精确召回曲线。这些点是从 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

最佳答案

看来你遇到了和我遇到的类似的问题。您需要将参数翻转到 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 曲线的数据:元组:(误报率、真报率)。

关于apache-spark - 如何从 BinaryClassificationMetrics 绘制 ROC 曲线和精确召回曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38207990/

相关文章:

java - web项目中如何使用spark mllib

apache-spark - 了解 Spark RandomForest 特征重要性结果

apache-spark - kerberos 环境的 Oozie Spark 操作失败

scala - 在 Spark 中使用 groupBy 并返回到 DataFrame

azure - 使用 Azure 机器学习的时间/预测系列

python - 如何正确绘制训练集和验证集的损失曲线?

scala - 在 Spark Scala 中编码时出现 ArrayIndexOutOfBoundsException

java - Spark Java 应用程序 UDF 的日志未出现在控制台或执行程序日志文件中

r - 时代如何影响深度学习模型?

apache-spark - 如何在 spark mllib 中进行基于项目的推荐?