二分类结果评价之TP、FP、TN、FN及准确率、精确率、召回率、F1得分的计算方式和python代码实现

1 混淆矩阵

混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。在二分类场景里是一个2×2的矩阵,如下图所示:

二分类结果评价之TP、FP、TN、FN及准确率、精确率、召回率、F1得分的计算方式和python代码实现
  • TP(True Positive):真正例,真值和预测值都是正例
  • FP(False Positive):假正例,真值是负例,预测值是正例
  • FN(False Negative):假负例,真值是正例,预测值是负例
  • TN(True Negative):真负例,真值和预测值都是负例

; 2 常见指标

在统计完二分类的结果后,还有一些常见的指标,用于对分类结果进行分析。这些指标包括:

二分类结果评价之TP、FP、TN、FN及准确率、精确率、召回率、F1得分的计算方式和python代码实现
上述指标中,前四个直接通过混淆矩阵的统计结果进行计算即可,最后两个可以画出图来,计算的是曲线面积。对于前四个指标,其定义分别为:
  • Accuracy(准确率):对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。
  • Precision(精确率):预测为正的样本中有多少是真正的正样本,它是针对我们预测结果而言的。Precision又称为查准率。
  • Recall(召回率):样本中的正例有多少被预测正确了, 它是针对我们原来的样本而言的。Recall又称为查全率。
  • F1:在上表中,P表示Precision,R表示Recall。F1得分相当于精确率和召回率的调和平均值,其中最佳值为1.0,最差值为0.0。

3 实现代码

下面是混淆矩阵和常见评价指标的计算代码:

import numpy as np

def compute_confusion_matrix(precited,expected):
    part = precited ^ expected
    pcount = np.bincount(part)
    tp_list = list(precited & expected)
    fp_list = list(precited & ~expected)
    tp = tp_list.count(1)
    fp = fp_list.count(1)
    tn = pcount[0] - tp
    fn = pcount[1] - fp
    return tp, fp, tn, fn

def compute_indexes(tp, fp, tn, fn):
    accuracy = (tp+tn) / (tp+tn+fp+fn)
    precision = tp / (tp+fp)
    recall = tp / (tp+fn)
    F1 = (2*precision*recall) / (precision+recall)
    return accuracy, precision, recall, F1

最后,自己制造一点数据对上述代码进行测试,结果如下:


precited = np.array([1,1,0,0,0,1,0,0,0,0,1,1,0,1,1,0])
expected = np.array([1,0,0,0,1,1,0,1,0,1,1,0,0,0,1,1])
tp, fp, tn, fn = compute_confusion_matrix(precited, expected)
print(f"TP: {tp}")
print(f"FP: {fp}")
print(f"TN: {tn}")
print(f"FN: {fn}")
accuracy, precision, recall, F1 = compute_indexes(tp, fp, tn, fn)
print(f"Accuracy:  {accuracy}")
print(f"Precision: {precision}")
print(f"Recall:    {recall}")
print(f"F1:        {F1}")

TP: 4
FP: 3
TN: 5
FN: 4
Accuracy:  0.5625
Precision: 0.5714285714285714
Recall:    0.5
F1:        0.5333333333333333

参考链接:
二分类器的常用评价指标
(python+离散)实现TP、TN、FP、FN
深度学习中:准确率,精确率,召回率,F1计算方式

Original: https://blog.csdn.net/weixin_44120025/article/details/125024205
Author: zeeq_
Title: 二分类结果评价之TP、FP、TN、FN及准确率、精确率、召回率、F1得分的计算方式和python代码实现

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/731264/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球