秒懂Precision精确率、Recall召回率-附代码和案例

  • 经常有同学目标检测评价指标含糊不清
  • 这次带你通俗易懂了解该知识

强烈推荐的博客:
更多有用知识,请点我
//☏:qq1309399183//
深度学习视觉必做项目

计算 precision(精确率)**和 recall(召回率)是评估分类模型性能常用的指标之一。以下是一个示例代码,展示如何计算 precision 和 recall。

举例说明

  • 假设有一个二分类问题,我们使用一个模型对数据进行分类,并得到了预测结果和真实标签。

  • 预测结果是模型对每个样本的预测结果(1代表正类,0代表负类),真实标签是每个样本的真实类别。

# 预测结果
predictions = [1, 0, 1, 1, 0, 0, 1, 1, 1, 0]

# 真实标签
true_labels = [1, 1, 0, 1, 1, 0, 1, 0, 0, 0]
  • 首先,我们需要计算 True Positive(TP)、False Positive(FP)和 False
    Negative(FN)的数量。
  • TP 是模型预测为正类且真实标签也为正类的样本数量FP 是模型预测为正类但真实标签为负类的样本数量FN是模型预测为负类但真实标签为正类的样本数量

代码

TP = 0
FP = 0
FN = 0

for pred, true in zip(predictions, true_labels):
    if pred == 1 and true == 1:
        TP += 1
    elif pred == 1 and true == 0:
        FP += 1
    elif pred == 0 and true == 1:
        FN += 1

通过 TP、FP 和 FN 的数量,我们可以计算 precision 和 recall。

precision = TP / (TP + FP)
recall = TP / (TP + FN)

print("Precision:", precision)
print("Recall:", recall)

在这个示例中,预测结果和真实标签的对比如下:

预测结果真实标签
11
01
10
11
01
00
11
10
10
00

详细解释

根据定义
TP 是预测为正类且真实标签也为正类的样本数量FP 是预测为正类但真实标签为负类的样本数量FN是预测为负类但真实标签为正类的样本数量
True Positives (TP): 3

第1个样本:预测为1(正),实际为1(正)
第4个样本:预测为1(正),实际为1(正)
第7个样本:预测为1(正),实际为1(正)
False Positives (FP): 3

第3个样本:预测为1(正),实际为0(负)
第8个样本:预测为1(正),实际为0(负)
第9个样本:预测为1(正),实际为0(负)
False Negatives (FN): 2

第2个样本:预测为0(负),实际为1(正)
第5个样本:预测为0(负),实际为1(正)

Precision(精确率)和Recall(召回率)是用于评估二分类模型性能的两个指标,它们分别定义如下:

在这里插入图片描述

下面是使用给定的 TP、FP 和 FN 计算 Precision 和 Recall 的代码:

# Given values
TP = 3
FP = 3
FN = 2

# Calculate Precision and Recall
precision = TP / (TP + FP)
recall = TP / (TP + FN)

# Print the results
print("Precision:", precision)
print("Recall:", recall)

根据给定的 TP、FP 和 FN,计算的结果为:

  • Precision(精确率): 3 / (3 + 3) = 0.5
  • Recall(召回率): 3 / (3 + 2) = 0.6

这是基于给定数据计算的 Precision 和 Recall。

最后,↓↓↓下面推广,点击可交流!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux设备驱动开发学习笔记(等待队列,锁,字符驱动程序,设备树,i2C...)

1. 内核工具和辅助函数 1.1宏container_of container_of函数可以通过结构体的成员变量检索出整个结构体 函数原型: /* pointer 指向结构体字段的指针 container_type 结构体类型 container_field 结构体字段名称 返回值是一个指针 */ container_of(pointer, con…

智慧水务平台有哪些应用场景?

随着城市化进程的加速,城市水资源管理面临着越来越多的挑战。如何实现高效、智能的水资源管理,成为了城市管理者亟待解决的问题。智慧水务平台作为新一代信息技术在水务领域的深度应用,为城市水资源管理提供了全新的解决方案。 智慧水务平台的…

Tensorflow2.0笔记 - 基础数学运算

本笔记主要记录基于元素操作的,-,*,/,//,%,**,log,exp等运算,矩阵乘法运算,多维tensor乘法相关运算 import tensorflow as tf import numpy as nptf.__version__#element-wise运算,对应元素的,-,*,/,**,//,% tensor1 tf.fill([3,3], 4) ten…

动手学深度学习5 矩阵计算

矩阵计算--矩阵怎么求导数 1. 导数和微分2. 偏导数3. 梯度1. 向量-标量求导2. 向量-向量求导3. 拓展到矩阵 4. 链式法则5. 小结QA练习 课程安排: 视频:https://www.bilibili.com/video/BV1eZ4y1w7PY/?spm_id_fromautoNext&vd_sourceeb04c9a33e87ce…

如何选择第三方电子合同平台?

说起第三方电子合同平台大家可能有点不了解,陕西CA来给大家解释解释:第三方电子合同平台是一种提供电子合同服务的第三方机构,可以提供电子合同的签署、管理、存储、公证等服务,保障电子合同的有效性和合法性。 第三方电子合同平台…

vue 里 props 类型为 Object 时设置 default: () => {} 返回的是 undefined 而不是 {}?

问题 今天遇到个小坑&#xff0c;就是 vue 里使用 props 传参类型为 Object 的时候设置 default: () > {} 报错&#xff0c;具体代码如下 <template><div class"pre-archive-info"><template v-if"infoData.kaimo ! null">{{ infoD…

如何使用Docker本地部署Wiki.js容器并结合内网穿透实现知识库共享

文章目录 1. 安装Docker2. 获取Wiki.js镜像3. 本地服务器打开Wiki.js并添加知识库内容4. 实现公网访问Wiki.js5. 固定Wiki.js公网地址 不管是在企业中还是在自己的个人知识整理上&#xff0c;我们都需要通过某种方式来有条理的组织相应的知识架构&#xff0c;那么一个好的知识整…

用冒泡排序谈默认参数应用

前面在调用函数提到为了将信息打印到ofil中&#xff0c;前面提到的办法是 ofstream ofil("text_out1"); void bubble_sort(vector<int> vec){ } 在file scope中定义ofil&#xff0c;这是一个不受欢迎的举动。这样比较难在其他环境重用 一般的程序编写法则是&…

组态王软件安装教程6.51/6.53/5.55/6.60/7.5SP2版本组态软件

组态王软件是一款功能强大的工业自动化软件&#xff0c;以下是各个版本的主要特点&#xff1a; 组态王6.51&#xff1a;该版本是亚控科技在组态王6.0x系列版本成功应用后&#xff0c;广泛征询数千家用户的需求和使用经验&#xff0c;采取先进软件开发模式和流程&#xff0c;由…

私有仓库工具Nexus Maven如何部署并实现远程访问管理界面

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具&#xff0c;用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关&#xff0c;可…

服务器运维小技巧(一)——如何进行远程协助

服务器运维中经常会遇到一些疑难问题&#xff0c;需要安全工程师&#xff0c;或者其他大神远程协助。很多人会选择使用todesk或者向日葵等一些远控软件。但使用这些软件会存在诸多问题&#xff1a; 双方都需要安装软件&#xff0c;太麻烦需要把服务器的公钥/密码交给对方不知道…

.NetCore Flurl.Http 4.0.0 以上管理客户端

参考原文地址&#xff1a;Managing Clients - Flurl 管理客户端 Flurl.Http 构建在堆栈之上System.Net.Http。如果您熟悉HttpClient&#xff0c;那么您可能听说过这个建议&#xff1a;不要为每个请求创建一个新客户端&#xff1b;重复使用它们&#xff0c;否则将面临后…

C++ //练习 1.15 编写程序,包含第14页”再探编译“中讨论的常见错误。熟悉编译器生成的错误信息。

C Primer&#xff08;第5版&#xff09; 练习 1.15 练习 1.15 编写程序&#xff0c;包含第14页”再探编译“中讨论的常见错误。熟悉编译器生成的错误信息。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /******************…

Django关联已有数据库中已有的数据表

Django关联已有数据库中已有的数据表 兜兜转转&#xff0c;发现自己还得用Python写后端&#xff0c;无语。。。 在写Django项目时&#xff0c;一般是通过模型来创建表&#xff0c;以及通过ORM框架来实现数据的crud&#xff0c;现在的情况是&#xff0c;如果我们的数据表已经存…

在js文件中引入外部变量

需求背景: 有个ip地址需要在项目部署后修改为客户自己的,所以就把这个ip放到了外部进行管理,方便直接修改 实现方法: 第一步:在public文件夹下创建一个json文件,里面放的就是需要在外部进行管理,随时都可以修改的变量 第二步:在需要引变量的js文件中写入如下代码 结合第一步…

Javascript,到底要不要写分号?

小白随机在互联网上乱丢一些赛博垃圾&#xff0c;还望拨冗批评斧正。 要不要加分号&#xff1f; 先说结论&#xff1a;“不引起程序出错的前提下&#xff0c;加不加都可以&#xff0c;按自身习惯来。” 为什么JS可以不加分号&#xff1f; 实际上&#xff0c;行尾使用分号的风…

命令行参数环境变量和进程空间地址

文章目录 命令行参数环境变量进程地址空间 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 命令行参数 什么是命令行参数&#xff1f; 我…

【JavaEE进阶】 关于应用分层

文章目录 &#x1f38b;序言&#x1f343;什么是应⽤分层&#x1f38d;为什么需要应⽤分层&#x1f340;如何分层(三层架构)&#x1f384;MVC和三层架构的区别和联系&#x1f333;什么是高内聚低耦合⭕总结 &#x1f38b;序言 在我们进行项目开发时我们如果一股脑将所有代码都…

限流算法之固定窗口算法

文章目录 原理示例图 优缺点优点缺点 示例代码java 适用场景不推荐原因如下&#xff1a; 原理 固定窗口算法是一种常见的限流算法&#xff0c;它通过在固定长度的时间窗口内限制请求数量来实现限流。这种算法的原理是在每个时间窗口内&#xff0c;对到达的请求进行计数&#x…

操作系统课程设计-内存管理

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 步骤 3.2 关键代码 3.2.1 显示虚拟内存的基本信息 3.2.2 遍历当前进程的虚拟内存 4 实验结果与分析 5 代码 前言 本实验为课设内容&#xff0c;博客内容为部分报告内容&#xff0c;仅为大家提供参考&#xff0c;请勿直…
最新文章