当前位置: 首页 > news >正文

Top-1错误率、Top-5错误率等常见的模型算法评估指标解析

Top-1 错误率:指预测输出的概率最高的类别与人工标注的类别相符的准确率,就是你预测的label取最后概率向量里面最大的那一个作为预测结果,如过你的预测结果中概率最大的那个分类正确,则预测正确,否则预测错误。比如预测100张图像的类别,每张图像的最高概率错误的有2张,那么top-1为2%;

Top-5 错误率:指预测输出的概率最高的前5个类别,就是最后概率向量最大的前五名中,只要出现了正确概率(与人工标注类别一致)即为预测正确,否则预测错误。比如预测100张图像的类别,每张图像前5个最高概率类别中没有一个正确时的张数有3张,那么top-5错误率为3%;

Top-1 错误率是指概率最大的预测结果不在正确标签中的概率。
Top-5 错误率是指概率前五的预测结果不在正确标签中的概率。

计算公式如下:

TOP-1 正确率 =(所有测试图片中正确标签包含在最高分类概率中的个数)除以(总的测试图片数)
TOP-1 错误率 =(所有测试图片中正确标签不在最高分类概率中的个数)除以(总的测试图片数)
TOP-5 正确率 =(所有测试图片中正确标签包含在前五个分类概率中的个数)除以(总的测试图片数)
TOP-5 错误率 =(所有测试图片中正确标签不在前五个概率中的个数)除以(总的测试图片数)

代码实现: 

# acc.py
import torch
def accu(output, target, topk=(1,)):"""Computes the accuracy over the k top predictions for the specified values of k"""with torch.no_grad():maxk = max(topk)batch_size = target.size(0)_, pred = output.topk(maxk, 1, True, True)pred = pred.t()correct = pred.eq(target.view(1, -1).expand_as(pred))res = []for k in topk:correct_k = correct[:k].view(-1).float().sum(0, keepdim=True)res.append(correct_k.mul_(100.0 / batch_size))return res# torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)
# input:输入张量
# k:指定返回的前几位的值
# dim:排序的维度
# largest:返回最大值
# sorted:返回值是否排序
# out:可选输出张量# 注:如需要top-3,可将上述代码(acc.py)改为 output.topk( , 3, , )以及对应的train代码里面改topk=(3, )。
# train.py
# 计算Top1pred1_train, pred2_train = accu(outputs, lables, topk=(1, ))train_top1.update(pred1_train[0], val_images.size(0))#train_top2.update(pred2_train[0], val_images.size(0))t_top1 = train_top1.avg#t_top2 = train_top2.avg
# 打印结果
print('[epoch %d] train_loss: %.3f  test_loss: %.3f val_accuracy: %.3f top1: %.4f' %(epoch + 1, running_loss / train_steps, testing_loss / test_steps , val_accurate, t_top1))class AverageMeter(object):def __init__(self):self.reset()def reset(self):self.val = 0self.avg = 0self.sum = 0self.count = 0def update(self, val, n=1):self.val = valself.sum += float(val) * nself.count += nself.avg = self.sum / self.count

参考博文:学习笔记30-Top1和Top5定义与代码复现_李卓璐的博客-CSDN博客 

        机器学习的监督学习中,为了方便绘制和展示,我们常用表格形式的混淆矩阵Confusion Matrix)作为评估模式。这在无监督学习中一般叫做匹配矩阵。

True Positive(TP) :预测为正例,实际为正例,即算法预测正确(True)

False Positive(FP) :预测为正例,实际为负例,即算法预测错误(False)

True Negative(TN) :预测为负例,实际为负例,即算法预测正确(True)

False Negative(FN) :预测为负例,实际为正例,即算法预测错误(False)

① Accuracy:准确率,指的是正确预测的样本数占总预测样本数的比值,它不考虑预测的样本是正例还是负例,反映的是模型算法整体性能,其公式如下:

② Precision:精确率,指的是正确预测的正样本数占所有预测为正样本的数量的比值,也就是说所有预测为正样本的样本中有多少是真正的正样本,它只关注正样本,这是区别于Accuracy的地方,其公式如下: 

③ F1-Score:F1分数,是统计学中用来衡量二分类模型精确度的一种指标,它被定义为精确率和召回率的调和平均数,它的最大值是1,最小值是0,其公式如下: 

即:

④ Recall:召回率,指的是正确预测的正样本数占真实正样本总数的比值,也就是指能从这些预测样本中能够正确找出多少个正样本,其公式如下: 

⑤ TPR(True Positive rate):真阳率,指的是在所有实际为阳性的样本中,被正确地判断为阳性的比率,同召回率,其公式如下:

⑥ FPR(False Positive rate):假阳率,指的是在所有实际为阴性的样本中,被错误地判断为阳性的比率,其公式如下: 

⑦ ROC(Receiver Operating Characteristic):受试者工作特征曲线,其以FPR假阳率为X轴坐标,以TPR真阳率为Y轴坐标,曲线越靠近左上角则说明模型算法性能越好 。

⑧ AUC(Area Under Curve):ROC曲线下的面积,模型通常对应于其对角线,通常AUC的值范围为0.5~1,其值越大说明模型算法的性能越好,AUC为0.5时模型算法为“随机猜测”,其值为1时说明模型算法达到理想状态。通常我们可以使用sklearn.metrics.auc(fpr, tpr)来求得AUC值。

⑨ PRC(Precision-Recall Curve):精准率-召回率曲线也叫PR曲线,其以Recall为X轴坐标,以Precision为Y轴坐标,通过对模型算法设定不同的阈值会得到不同的precision和recall值,将这些序列绘制到直角坐标系上就得到了PR曲线,PR曲线下的面积为1时则说明模型算法性能最为理想。 

⑩ IOU(Intersection over Union):交并比,目标检测模型中常用的指标,指的是ground truth bbox与predict bbox的交集面积占两者并集面积的一个比率,IoU值越大说明预测检测框的模型算法性能越好,通常在目标检测任务里将 IoU>=0.7 的区域设定为正例(目标),而将IoU<=0.3的区域设定为负例(背景),其余的会丢弃掉,形象化来说可以用如下图来解释IoU:

如果我们用A表示ground truth bbox的面积,B表示predict bbox的面积,而I表示两者的交集面积,那么IoU的计算公式如下:

        pytorch中的IOU值计算: 

def box_area(boxes):return (boxes[:, 2] - boxes[:, 0]) * (boxes[:, 3] - boxes[:, 1])def box_iou(boxes1, boxes2):area1 = box_area(boxes1)area2 = box_area(boxes2)lt = torch.max(boxes1[:, :2], boxes2[:, :2]) rb = torch.min(boxes1[:, 2:], boxes2[:, 2:])  wh = rb - lt inter = wh[:, 0] * wh[:, 1]iou = inter / (area1 + area2 - inter)return iou

⑪ AP(Average Percision):AP为平均精度,指的是所有图片内的具体某一类的PR曲线下的面积,其计算方式有两种,第一种算法:首先设定一组recall阈值[0, 0.1, 0.2, …, 1],然后对每个recall阈值从小到大取值,同时计算当取大于该recall阈值时top-n所对应的最大precision。这样,我们就计算出了11个precision,AP即为这11个precision的平均值,这种方法英文叫做11-point interpolated average precision;第二种算法:该方法类似,新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, …, M/M),对于每个recall值r,该recall阈值时top-n所对应的最大precision,然后对这M个precision值取平均即得到最后的AP值。 

⑫ mAP(Mean Average Percision):mAP为均值平均精度,指的是所有图片内的所有类别的AP的平均值,目前,在目标检测类里用的最多的是mAP,一般所宣称的性能是在IoU为0.5时mAP的值。

⑬ MAE(Mean Absolute Error):平均绝对误差,对于回归预测类,其能更好地反映预测值与真实值误差的实际情况,其计算公式如下:

⑭ RMSE(Root Mean Square Error):均方根误差,用于衡量观测值与真实值之间的偏差,其对一组预测中的特大或特小误差反映比较敏感,常用来作为机器学习模型预测结果衡量的标准,其计算公式如下: 

相关文章:

Top-1错误率、Top-5错误率等常见的模型算法评估指标解析

Top-1 错误率&#xff1a;指预测输出的概率最高的类别与人工标注的类别相符的准确率&#xff0c;就是你预测的label取最后概率向量里面最大的那一个作为预测结果&#xff0c;如过你的预测结果中概率最大的那个分类正确&#xff0c;则预测正确&#xff0c;否则预测错误。比如预测…...

Urho3D 容器类型

Urho3D实现了自己的字符串类型和模板容器&#xff0c;而不是使用STL。其基本原理如下&#xff1a; 在某些情况下提高了性能&#xff0c;例如使用PODVector类时。保证字符串和容器的二进制大小&#xff0c;以允许例如嵌入Variant对象内。减少了编译时间。直接命名和实现&#x…...

C语言学习笔记(四): 循环结构程序设计

while语句 定义 While语句是C语言中的循环语句&#xff0c;它按条件循环执行语句&#xff0c;直到条件不满足为止 语法格式如下: while(condition) {//循环体内容; }使用实例 求123…100 include <stdio.h> int main(){int i 1, sum 0;while (i<100){sum i …...

02 OpenCV图像通道处理

1 通道提取与合并 在数字图像处理中&#xff0c;图像通道是指一个图像中的颜色信息被分离为不同的颜色分量。常见的图像通道包括RGB通道、灰度通道、HSV通道等。 RGB通道是指将图像分离为红色、绿色和蓝色三个颜色通道&#xff0c;每个通道表示相应颜色的亮度。这种方式是最常…...

微信小程序图书馆座位预约管理系统

开发工具&#xff1a;IDEA、微信小程序服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8项目构建&#xff1a;maven数据库&#xff1a;mysql5.7前端技术&#xff1a;vue、uniapp服务端技术&#xff1a;springbootmybatis本系统分微信小程序和管理后台两部分&#xff0c;项目采用…...

有限元分析学习一

系列文章目录 有限元分析学习一 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、有限元方法的简单介绍1.1 有限元的基础概念1.2 有限元软件发展历史1.3 有限元软件二、弹性力学的简单介绍2.1.…...

android avb2.0 总结

1、android vbmeta结构深入解析 2、android libavb深入解读 看完结构与代码,进一步了解了avb 比如vbmeta的结构、5种描述符、hash公钥签名存储位置 多层vbmeta结构、无vbmeta分区的验证逻辑、hash计算对比、公钥验证、签名验签、5种描述符体的处理 但是还有一些问题没有解决 如…...

聊天机器人-意图识别类,开源库推荐

随着人工智能和自然语言处理技术的不断发展&#xff0c;聊天机器人在商业、教育、医疗等领域的应用越来越广泛。因此&#xff0c;开源聊天机器人代码库也逐渐成为了热门话题。 开源聊天机器人代码库可以帮助开发者快速构建功能强大的聊天机器人&#xff0c;而不必从头开始编写…...

Java 标识符以及修饰符

Java 标识符Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。关于 Java 标识符&#xff0c;有以下几点需要注意&#xff1a;所有的标识符都应该以字母&#xff08;A-Z 或者 a-z&#xff09;,美元符&#xff08;$&#xff09;、或者下划线&#xff08;_&…...

封装、继承、Super、重写、多态instanceof类型转换的使用以及个人见解

这里写目录标题封装继承supersuper和this的区别重写多态instanceof类型转换封装 之前我们调用共有的属性&#xff0c;是直接可以调用的 但是属性私有后&#xff0c;无法在直接.调用 只能通过getset调用 继承 super 可以直接调用父类中属性和方法&#xff0c;私有的无法做 其…...

day13_面向对象的三大特征之一(封装)

封装概述 为什么需要封装&#xff1f; 现实生活中&#xff0c;每一个个体与个体之间是有边界的&#xff0c;每一个团体与团体之间是有边界的&#xff0c;而同一个个体、团体内部的信息是互通的&#xff0c;只是对外有所隐瞒。例如&#xff1a;我们使用的电脑&#xff0c;内部…...

越界访问数组

越界访问是指访问&#xff08;操作修改&#xff09;了不属于自己的空间 我们以如下代码为例&#xff1a;此代码在vs中进行 #include <stdio.h> int main() {int i 0;int arr[] {1,2,3,4,5,6,7,8,9,10};for(i0; i<12; i){arr[i] 0;printf("hello\n");}r…...

软件设计(十)--计算机系统知识

软件设计&#xff08;九&#xff09;https://blog.csdn.net/ke1ying/article/details/128990035 一、效验码 奇偶效验&#xff1a;是一种最简单的效验方法。基本思想是&#xff1a;通过在编码中增加一个效验位来使编码中1的个数为奇数&#xff08;奇效验&#xff09;或者为偶…...

【不知道是啥】浅保存哈

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…...

2021 WAIC 世界人工智能大会参会总结

前言 2021 年世界人工智能大会&#xff08;WAIC&#xff09;于2021年7月7日至10日在上海世博展览馆举办&#xff0c;本届大会继续秉持「智联世界」的理念&#xff0c;以「众智成城」为主题&#xff0c;促进全球人工智能创新思想、技术、应用、人才和资本的集聚和交流&#xff…...

ThingsBoard-实现定时任务调度器批量RPC

1、概述 ThingsBoard-CE版是不支持调度器的,只有PE版才支持,但是系统中很多时候需要使用调度器来实现功能,例如:定时给设备下发rpc查询数据,我们如何来实现呢?下面我将教你使用巧妙的方法来实现。 2、使用什么实现 我们可以使用规则链提供的一个节点来实现,这个节点可…...

MySQL数据库调优————数据库调优维度及测试数据准备

MySQL性能优化金字塔法则 不合理的需求&#xff0c;会造成很多问题。&#xff08;比如未分页&#xff0c;数据需要多表联查等&#xff09;做架构设计的时候&#xff0c;应充分考虑业务的实际情况&#xff0c;考虑好数据库的各种选择&#xff08;比如是否要读写分离&#xff0c;…...

电子货架标签多种固定方式

2.1寸和2.9寸电子价格标签多种固定方式&#xff1a; 1、桌面支架&#xff0c;放置在桌面或是货架上&#xff0c;用于桌面产品的价格或是信息显示 2、粘贴架&#xff0c;方便用于墙面桌面等应用 3、半透明支架&#xff0c;用于货架上的商品吊挂显示价格信息 4、轨道架&#xff…...

基于JavaEE的智能化跨境电子商务平台的设计

技术&#xff1a;Java、JSP、框架等摘要&#xff1a;伴随着近年来互联网的迅猛发展&#xff0c;网上零售逐渐成为了一种影响广泛、方便快捷的购物渠道。我国网上零售业发展的步伐很快。在如今经济全球化的影响下&#xff0c;消费者的网购行为趋于开放化、多元化&#xff0c;对于…...

C语言学习笔记(二): 简单的C程序设计

数据的表现形式 常量 在C语言中常量有以下几种&#xff1a; 整型常量&#xff1a; 0,-1,100实型常量&#xff1a; 小数形式(12.12)&#xff1b;指数形式(12.1e312.110312.1\times 10^312.1103)字符常量&#xff1a; 普通字符(’a’,’Z’,’#’)&#xff1b;转义字符(’\n’…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...