【问题标题】:Compute accuracy from F1, precision and recall scores根据 F1、精度和召回分数计算准确度
【发布时间】:2020-04-16 21:02:21
【问题描述】:
在训练期间,我忘记保存模型和模型在测试集上的预测。我只有 F1、精度和召回分数。我想知道是否有任何方法可以仅根据 F1、精度和召回分数来计算准确率?
f1 = 0.9466979550787799
precision = 0.9424328383113633
recall = 0.951001852163664
【问题讨论】:
标签:
machine-learning
deep-learning
precision-recall
【解决方案1】:
简短的回答是,您有三个方程,但有四个变量,因此您可以,但前提是您已经知道要预测的元素总数。要详细了解这一点,让我们将真阳性、真阴性、假阳性和假阴性分别记为TP, TN, FP, FN。
从精度定义为TP/(TP+FP),可以得到
FP=TP(1-precision)/precision (1)
同样,根据召回的定义,你会得到
FN=TP(1-recall)/recall (2)
现在让我们使用F1 score 的定义为F1=2/(precision^{-1}+recall^{-1})。通过插入上面的FN 和FP 表达式,我们将得到以下表达式:
F1=2TP / (2TP +TP(1-recall)/recall + TP(1-prec)/prec)
你可以很容易地解出这个方程并得到TP的值。将其插入 (1) 和 (2) 中,您将达到知道 TP, FN, FP 的地步。
您仍然需要知道真正的否定TN 才能计算准确度(假设您按照准确度的通常定义为(TP+TN)/(TP+TN+FP+FN))。
要确定TN,需要知道total_n的元素总数:
TN=total_n - (TP+FN+FP)
一旦你知道你可以计算准确度。