AP AR

混淆矩阵

真实值=正例真实值=负例
预测值=正例TPFP
预测值=负例FNTN

(根据阈值预测)

P精确度计算:TP/(TP+FP)

R召回率计算:TP/(TP+FN)

AP

综合考虑P R

根据不同的阈值计算出不同的PR组合, 画出PR曲线,计算曲线下面积即为PR

(所有点插值法计算,简单来讲就是近似计算小矩形面积和)

import numpy as np
import matplotlib.pyplot as pltdef calculate_precision_recall(confusion_matrices):#计算P Rrecall = []precision = []for tp, fp, fn in confusion_matrices:if tp + fp == 0:p = 0.0else:p = tp / (tp + fp)if tp + fn == 0:r = 0.0else:r = tp / (tp + fn)precision.append(p)recall.append(r)return recall, precisiondef calculate_ap_all_points(recall, precision):#所有点插值法计算面积recall = np.concatenate(([0.], recall, [1.]))precision = np.concatenate(([0.], precision, [0.]))for i in range(precision.size - 1, 0, -1):precision[i - 1] = np.maximum(precision[i - 1], precision[i])ap = np.sum(np.diff(recall) * precision[1:])return ap# 示例 (每个元素为 [TP, FP, FN])
confusion_matrices = [[10, 0, 0],  [8, 1, 2],  [6, 2, 4], [5, 3, 5],  [4, 4, 6],  [3, 7, 7],  
]# 计算精确率和召回率
recall, precision = calculate_precision_recall(confusion_matrices)# 计算AP
ap = calculate_ap_all_points(recall, precision)
print(f"平均精度 (AP): {ap}")plt.plot(recall, precision, marker='o')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall Curve (AP = {:.3f})'.format(ap))
plt.grid(True)
plt.show()

AR

平均召回率

主要是考虑漏检,专注于R

import numpy as npdef calculate_ar(true_positives, false_negatives, max_detections):recall_values = []for tp, fn in zip(true_positives, false_negatives):if tp + fn == 0:recall = 0.0else:recall = tp / (tp + fn)recall_values.append(recall)# 假设我们只考虑前 max_detections 个召回率值if len(recall_values) > max_detections:recall_values = recall_values[:max_detections]if not recall_values:return 0.0ar = np.mean(recall_values)return ar# 示例数据
true_positives = [10, 8, 6, 5, 4, 3]  # TP
false_negatives = [0, 2, 4, 5, 6, 7]  # FP
max_detections = 5  # 最大检测次数# 计算AR
ar = calculate_ar(true_positives, false_negatives, max_detections)
print(f"平均召回率 (AR): {ar}")#计算maxDets 为10时候的AR
max_detections_2 = 10
ar_2 = calculate_ar(true_positives, false_negatives, max_detections_2)
print(f"平均召回率 (AR)maxDets为10 : {ar_2}")

平均精度(Average Precision,AP)以及AP50、AP75、APs、APm、APl、Box AP、Mask AP等不同阈值和细分类别的评估指标说明-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu上部署Flask+MySQL项目

一、服务器安装python环境 1、安装gcc(Ubuntu默认已安装) 2、安装python源码 wget https://www.python.org/ftp/python/3.13.2/Python-3.13.2.tar.xz 3、安装Python依赖库 4、配置python豆瓣源 二、服务器安装虚拟环境 1、安装virtualenv pip3.10 ins…

深度学习有哪些算法?

深度学习包含多种算法和模型,广泛应用于图像处理、自然语言处理、语音识别等领域。以下是主要分类及代表性算法: 一、基础神经网络 多层感知机(MLP) 最简单的深度学习模型,由多个全连接层组成,用于分类和回…

【css酷炫效果】纯CSS实现按钮流光边框

【css酷炫效果】纯CSS实现按钮流光边框 缘创作背景html结构css样式完整代码效果图 【css酷炫效果】纯CSS实现按钮流光边框。 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90490501 缘 创作随缘,不定时更…

【Android】ListView控件在进入|退出小窗下的异常

1,描述 页面使用了ListView控件,随后进入小窗模式,导致视图遮挡 2,根源 ListView虽然进入小窗relayout,其measureChild高度比全屏下要小,但是,其内部使用了Recycler机制,缓存了ite…

基于ssm的电子病历系统(全套)

一、系统架构 前端:jsp | bootstrap | jquery 后端:spring | springmvc | mybatis 环境:jdk1.8 | mysql | maven | tomcat | idea 二、代码及数据库 三、功能介绍 01. 登录 02. 主页 03. 管理员-个人中心-修改密码…

使用STM32CubeMX+DMA+空闲中断实现串口接收和发送数据(STM32G070CBT6)

1.STM32CubeMX配置 (1)配置SYS (2)配置RCC (3)配置串口,此处我用的是串口4,其他串口也是一样的 (4)配置DMA,将串口4的TX和RX添加到DMA中 &#…

LabVIEW VI Scripting随机数波形图自动生成

通过LabVIEW VI Scripting 技术,实现从零开始编程化创建并运行一个随机数波形监测VI。核心功能包括自动化生成VI框架、添加控件与函数、配置数据流逻辑及界面布局优化,适用于批量生成测试工具、教学模板开发或复杂系统的模块化构建。通过脚本化操作&…

HTML 列表:构建清晰结构的网页内容

引言 在网页开发过程中,将信息有条理地呈现给用户至关重要。HTML 列表作为一种强大的工具,能够使内容更加结构化和易于阅读。HTML 提供了有序列表、无序列表和自定义列表三种类型,满足不同场景下的内容展示需求。本文将深入探讨这三种列表的…

如何在电脑上使用 Jupyter Notebook 通过 SSH 远程连接树莓派Zero

有无数种方式通过SSH远程连接树莓派,但对于树莓派Zero 2W这种硬件资源有限的板子,因为内存有限Pycharm干脆不能通过SSH连接树莓派Zero 2W。VScode通过SSH连接时,也会因为资源有限时常断线。因此,我们就要用轻量级的编辑器Jupyter …

JS超过Number的最大值

场景:用户输入(这个可以通过前端限制输入长度控制)或正规场景,大数据量展示 Number类型的最大值是2^53 - 1 解决方案一:BigInt BigInt 是 JavaScript 中专门用来表示任意精度整数的类型。它允许你处理超出 Number 范围的整数。 const bigNu…

SpringBoot之一个注解完成所有类型的文件下载!

下载功能应该是比较常见的功能了,每个项目里都会有,简单的下载不难但是代码多也麻烦,对于复杂的下载代码更多更是麻烦。 如果我说现在只需要一个注解就能帮你下载任意的对象,是不是觉得非常的方便 Download(source "classp…

WebAssembly 技术在逆向爬虫中的应用研究

一、引言 1.1 Web 技术发展与性能需求 在当今数字化浪潮中,Web 应用已成为人们生活和工作中不可或缺的一部分。从简单的静态网页到功能复杂的单页面应用(SPA),Web 技术的发展日新月异。随着用户对 Web 应用交互性、实时性和复杂性的要求不断提高,传统的 Web 开发技术面临着…

解决 openeuler 系统 docker 下载慢,docker 镜像加速

一、步骤说明 1. 编辑 Docker 配置文件 Docker 的镜像源配置文件路径为 /etc/docker/daemon.json。如果该文件不存在,则需要先创建目录和文件。 # 创建目录(如果不存在) sudo mkdir -p /etc/docker# 编辑配置文件(使用 nano 或…

python项目一键加密,极度简洁

在要加密的项目内运行python -m pip install py2safe 安装后cd到项目的根目录,运行py2safe 它会递归加密所有文件夹,不需要参数,拿过来就用,基于pyarmor开发,基本破解不了,太方便辣 这是readme文件,不仅提到了用法,还贴心的加入了口腔溃疡的治疗办法,真是太贴心了 # py2saf…

JavaScript 中的包装类型:概念、作用与使用场景

文章目录 引言1. 什么是包装类型?1.1 包装类型的定义1.2 包装类型的作用 2. 包装类型的使用2.1 自动装箱(Autoboxing)示例 2.2 手动创建包装对象示例 3. 包装类型的特性3.1 包装对象的生命周期示例 3.2 基本类型与包装对象的区别示例 4. 包装…

react18 核心知识点杂记1

类组件 如何渲染为真实dom 入口&#xff1a; const root ReactDOM.createRoot(document.getElementById(root))root.render(类组件)⬇️ 类组件内部render() {return (<div>12</div>)}⬇️ (经过babel-preset-react-app 把jsx语法&#xff0c;编译为h函数形式) R…

Matlab 汽车传动系统的振动特性分析

1、内容简介 Matlab 186-汽车传动系统的振动特性分析 可以交流、咨询、答疑 2、内容说明 略 摘要&#xff1a;汽车动力传动系统是一个具有多自由度的、连续的、有阻尼系统。传动系统的振动主要有横向振动、扭转振动、纵向振动。并且汽车传动系统的扭转振动是一个非常重要的振…

JDBC技术基础

文章目录 1. JDBC概述1.1 数据的持久化1.2 Java中的数据存储技术1.3 JDBC介绍1.4 JDBC体系结构1.5 JDBC程序编写步骤 2. 获取数据库连接2.1 引入JAR包2.2 要素一&#xff1a;Driver接口实现类2.2.1 Driver接口介绍2.2.2 加载与注册JDBC驱动 2.3 要素二&#xff1a;URL2.4 要素三…

Matlab自学笔记四十八:各类型缺失值的创建、判断、替换、移位和处理方法

1.各类数据缺失值的创建 程序示例如下&#xff1a; a[nan 1 2 3] %数值型缺失值 s[string(missing) "a" "b"] %字符串型缺失值 t[NaT datetime(2018,8,8)] %时间型缺失值 isnan(a) %判断数值型缺失值 运行结果&#xff1a; a NaN 1 2 …

如何使用IDEA Maven构建本地jar包和POM文件?

在开发Java项目时&#xff0c;很多人会借助Maven来管理项目依赖与构建。用IntelliJ IDEA&#xff08;简称IDEA&#xff09;来构建本地jar包和POM文件&#xff0c;是一个常见的需求。下面我就给你详细讲解一下这个过程&#xff0c;确保你也能轻松上手&#xff01; 准备工作 首…