当我有预测和地面实况文件(原始图表)时,如何使用 spark 和 scala 计算 TP、TN、FP 和 FN?

How to calculate TP, TN, FP and FN with spark and scala when I have predictions and ground truth file ( original graph )?

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

a,b
b,c
b,d

此图表示合着网络。我有 运行 蛮力检查每个节点到每个其他节点,如果广告(例如 a,b => 节点是论文)具有 jaccard 相似性 > 从给定的阈值,我将保持这个边缘到我的结果.我的结果是与第一个相同的结构数据框。

我现在想获得预测的 TP、TN、FP 和 FN 的数量,以便计算精度、召回率、准确性和 F1 分数。我怎样才能得到这些值?

有没有办法只用这两个数据帧(originalDF 和 predictionsDF)用 scala 计算 F1 分数?

谢谢你!

假设您有一个包含 "label" 和 "prediction" 列的 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()