一文帮助你快速读懂 TP、FP、FN 到底是个啥玩意
  Wv2PRSlQRjkP 2023年11月02日 35 0

TP、FP、FN是评价分类模型性能的常用指标。

之前很多次都会遇到这三个值,每次遇到都要重新查资料,看这三个值是怎么计算的,具体是指什么的?今天终于理解透彻了,所以赶紧来记录一下~~~

TP(True Positive,真正例):表示模型正确地正例预测为正例的数量;

FP(False Positive,假正例):表示模型错误地负例预测为正例的数量;

FN(False Negative,假负例):表示模型错误地正例预测为负例的数量。

一文帮助你快速读懂 TP、FP、FN 到底是个啥玩意_评价指标

这样地概念给大家一看,是不是有很多疑惑?下面我们来用大白话来说明一下这三个指标。

首先,我们要关注正确地错误地这两个形容词,分别表示看gold和pred二者一致的值或者不一致的值

接着,我们来说明一下,什么是正例?什么是负例?嗯,我相信一个例子可用帮助大家更好地理解这个问题,如下所示,gold是真实结果,而pred是预测结果

gold = ['我', '爱', '中', '国'] 
pred = ['我', '爱', '中国']

其中,正例有“我”、“爱”、“中”、“国”;负例有“中国”。

这个时候,我们是不是脑子清晰了一点?其实,正例是真实结果中包含的所有情况,预测结果中也有部分正例,而负例只能出现在预测结果中,但并不是所有的预测结果都是负例。

通俗来说,就是正例既可以出现在真实结果中,也可以出现在预测结果中,但是负例只会出现在预测结果中。当我们理解了这一点,那么TP、FP、FN三者的值就很好计算了。

当我们看到正例,就从真实结果到预测结果来看;当我们看到负例,就从预测结果到真实结果来看。

TP—正确地将正例预测为正例的数量正确地,是让我们看gold和pred一致的情况,正例预测为正例,是让我们将gold与pred进行对比,也就是统计gold与pred一致的数量

FP—错误地将负例预测为正例的数量错误地,是让我们看gold和pred不一致的情况,负例预测为正例,是让我们将pred与gold进行对比,也就是统计pred与gold不一致的数量

FN—错误地将正例预测为负例的数量错误地,是让我们看gold和pred不一致的情况,正例预测为负例,是让我们将gold与pred进行对比,也就是统计gold与pred不一致的数量

在上边的例子中,TP=2,FP=1,FN=2。


哈哈哈 看到这,是不是脑子清醒多了呢?那我们一鼓作气,再来看一下准确率(Precision,P)召回率(Recall,R)F1值(F1-score,F1)!!

准确率P和召回率R分别衡量了结果的正确性和完整性,F1-Score则综合了两者的评价。

一文帮助你快速读懂 TP、FP、FN 到底是个啥玩意_评价指标_02

代码示例:

# 定义评价函数
def evaluate(gold, pred):
    # 计算准确率
    tp = 0
    fp = 0
    for i in range(len(pred)):
        if i < len(gold) and pred[i] == gold[i]:
            tp += 1
        else:
            fp += 1
    precision = tp / (tp + fp)

    print("tp: ", tp)
    print("fp: ", fp)

    # 计算召回率
    tp = 0
    fn = 0
    for i in range(len(gold)):
        if i < len(pred) and gold[i] == pred[i]:
            tp += 1
        else:
            fn += 1
    recall = tp / (tp + fn)

    print("tp: ", tp)
    print("fn: ", fn)

    # 计算F1-Score
    f1 = 2 * precision * recall / (precision + recall)

    return precision, recall, f1

# 测试评价函数
gold = ['0', '1', '2', '1', '0', '1', '3', '4', '6', '1']
pred = ['0', '2', '2', '1', '1', '1', '3', '4', '6', '1', '1']
precision, recall, f1 = evaluate(gold, pred)
print('P:', precision)
print('R:', recall)
print('F1-Score:', f1)

运行结果:

一文帮助你快速读懂 TP、FP、FN 到底是个啥玩意_评价指标_03

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

Wv2PRSlQRjkP