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

您所在的位置:网站首页 召回率f1值的含义 二分类结果评价之TP、FP、TN、FN及准确率、精确率、召回率、F1得分的计算方式和python代码实现

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

#二分类结果评价之TP、FP、TN、FN及准确率、精确率、召回率、F1得分的计算方式和python代码实现| 来源: 网络整理| 查看: 265

1 混淆矩阵

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

TP(True Positive):真正例,真值和预测值都是正例 FP(False Positive):假正例,真值是负例,预测值是正例 FN(False Negative):假负例,真值是正例,预测值是负例 TN(True Negative):真负例,真值和预测值都是负例    2 常见指标

  在统计完二分类的结果后,还有一些常见的指标,用于对分类结果进行分析。这些指标包括:   上述指标中,前四个直接通过混淆矩阵的统计结果进行计算即可,最后两个可以画出图来,计算的是曲线面积。对于前四个指标,其定义分别为:

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 # 对结果进行分类,亦或使得判断正确的为0,判断错误的为1 pcount = np.bincount(part) # 分类结果统计,pcount[0]为0的个数,pcount[1]为1的个数 tp_list = list(precited & expected) # 将TP的计算结果转换为list fp_list = list(precited & ~expected) # 将FP的计算结果转换为list tp = tp_list.count(1) # 统计TP的个数 fp = fp_list.count(1) # 统计FP的个数 tn = pcount[0] - tp # 统计TN的个数 fn = pcount[1] - fp # 统计FN的个数 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) # F1 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计算方式

来源:zeeq_

您可能感兴趣的内容: yolov5训练结果解析 YOLOV5源码的详细解读 实现影像组学全流程 计算yolov5中detect.py生成图像的mAP YOLOX安装部署使用训练教程以及报错


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3