当我有了预测和地面真实文件(原始图)时,如何用火花和标量计算TP,TN,FP和FN?

时间:2019-01-22 16:29:05

标签: algorithm scala apache-spark evaluation precision-recall

我有一个表示图的数据框。它具有以下结构:

a,b
b,c
b,d

此图代表共同作者网络。我已经对每个节点进行了蛮力检查,并且如果adge(例如a,b =>节点是论文)具有jaccard相似度>从给定的阈值起,我将保持这一优势。我的结果是与第一个相同的结构数据框。

我现在想为我的预测获取TP,TN,FP和FN的数量,以便计算精度,召回率,准确性和F1得分。如何获得这些值?

仅使用这两个数据帧(原始DF和预测DF),是否有任何方法可以使用Scala计算F1分数?

谢谢你!

1 个答案:

答案 0 :(得分:0)

假设您有一个带有“标签”和“预测”列的DataFrame,则可以使用以下过滤方法来计算TP,TN,FP,FN:

val TP = predictions.filter($"prediction"===1 && $"label"===$"prediction").count()
val FP = predictions.filter($"prediction"===1 && $"label"=!=$"prediction").count()
val TN = predictions.filter($"prediction"===0 && $"label"===$"prediction").count()
val FN = predictions.filter($"prediction"===0 && $"label"=!=$"prediction").count()

enter image description here