我试图在图表中绘制 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 构造函数,或者可能传递概率而不是预测。因此,例如,如果您使用 BinaryClassificationMetrics
和 RandomForestClassifier
,则根据 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/