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

机器学习之查准率、查全率与F1

文章目录

  • 查准率(Precision):
  • 查全率(Recall):
  • F1分数(F1 Score):
  • 实例
  • P-R曲线
  • F1度量
  • python实现

查准率(Precision):

定义: 查准率是指在所有被分类为正类别的样本中,有多少比例的样本实际上是正类别的。它强调的是模型预测为正类别的样本中真正是正类别的比例。
应用场景: 当我们关心的是确保被模型预测为正类别的样本确实是正类别时,例如在医学诊断中,确保模型预测为患有某种疾病的患者确实患有该疾病。

查准率表示在所有被模型预测为正类别的样本中,有多少比例的样本实际上是正类别的。具体计算公式为:

在这里插入图片描述

查全率(Recall):

定义: 查全率是指在所有实际正类别的样本中,有多少比例的样本被模型成功地预测为了正类别。它强调的是模型能够捕捉到实际正类别样本的能力。
应用场景: 当我们关心的是确保所有真实正类别的样本都被模型找出来时,例如在安全检查中,确保所有危险品都被检测出来。
查全率表示在所有实际正类别的样本中,有多少比例的样本被模型成功地预测为了正类别。具体计算公式为:
在这里插入图片描述

F1分数(F1 Score):

定义: F1分数是查准率和查全率的调和平均数,它综合了查准率和查全率的信息,可以帮助我们在精度和召回率之间找到一个平衡点。
应用场景: 当我们需要综合考虑查准率和查全率时,避免查准率和查全率出现明显的不平衡时,例如在信息检索中,需要同时考虑搜索结果的准确性和完整性。

实例

这里写一个二分类的问题来展示什么是查准率查全率

在这里插入图片描述
在这里插入图片描述
为什么我们要关注全差率,和查准率呢?

挑出来的西瓜有多少西瓜是好瓜
挑出来的西瓜有多少是坏瓜
这个就要看自己关系什么了

这里的表2.1 的混淆矩阵(代码实现不是二分类)可以用Python实现:

from sklearn.metrics import confusion_matrix
import numpy as np# 示例的真实标签和预测标签
y_true = np.array([1, 0, 1, 2, 0, 1, 2, 3, 2])
y_pred = np.array([1, 0, 1, 2, 0, 2, 1, 3, 2])# 计算混淆矩阵
conf_matrix = confusion_matrix(y_true, y_pred)# 输出混淆矩阵
print("Confusion Matrix:")
print(conf_matrix)

P-R曲线

关于全查率,和查准率的 P-R曲线
在这里插入图片描述
在图中 A曲线 包含C 曲线,所有一般来说A曲线优于C曲线,
在A曲线与B曲线当中,有交叉则需要看他们所围成的面积。但是这个面积通常不容易计算,所有找了平衡点(Break-Event Point)来评价 他是 全差率=查准率的点。

F1度量

但是平衡点还是过于简单所以有了F1度量。
在这里插入图片描述

P:查准率
R:查全率
TP:真正列
TN:真反列
注意看:上面的表2.1

注意: 在某些应用中 查全率和查准率的重视程度不一致。
比如说在:

  • (1)商品推销当中,为了尽量打扰用户,更喜欢退出的是用户感兴趣的此时查准率比较重要。
  • (2)在抓捕逃犯信息当中,希望尽可能减少漏掉逃犯则这个时候查全率比较重要。

为了更好的确定度量,表达出查全率\查准率的偏好我们将定义F为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


多次训练测试时取平均的F1(宏F1- mocro-F1)
在这里插入图片描述
在这里插入图片描述

python实现

P-R(Precision-Recall)曲线是一种用于可视化分类模型在不同阈值下查准率(Precision)和查全率(Recall)之间权衡关系的图形。以下是绘制P-R曲线的一般步骤:

  1. 计算不同阈值下的查准率和查全率: 使用不同的阈值将模型的预测概率转换为类别标签,然后计算每个阈值下的查准率和查全率。

  2. 绘制P-R曲线: 将计算得到的查准率和查全率值组成的点按照阈值的顺序绘制在二维坐标系上,横轴为查全率(Recall),纵轴为查准率(Precision)。

以下是一个Python示例代码,演示如何绘制P-R曲线,其中假设y_true为真实标签,y_scores为模型的预测概率。
= 这里也有阈值,就是thresholds ===

from sklearn.metrics import precision_recall_curve
import matplotlib.pyplot as plt# 示例的真实标签和模型预测概率
y_true = [1, 1, 0, 1, 0, 1, 1, 0, 0, 1]
y_scores = [0.8, 0.7, 0.4, 0.6, 0.3, 0.9, 0.5, 0.2, 0.1, 0.75]# 计算P-R曲线的查准率、查全率和阈值
precision, recall, thresholds = precision_recall_curve(y_true, y_scores)# 绘制P-R曲线
plt.figure(figsize=(8, 6))
plt.plot(recall, precision, marker='.')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('P-R Curve')
plt.grid(True)
plt.show()

在这个例子中,precision_recall_curve函数会返回在所有可能阈值下的查准率、查全率和相应的阈值。然后,通过plt.plot()函数绘制这些点,就得到了P-R曲线。曲线上的每个点对应于一个特定的阈值,展示了在该阈值下模型的查准率和查全率。通常,P-R曲线越靠近右上角,表示模型在不同阈值下的性能越好。

相关文章:

机器学习之查准率、查全率与F1

文章目录 查准率(Precision):查全率(Recall):F1分数(F1 Score):实例P-R曲线F1度量python实现 查准率(Precision): 定义: …...

*Django中的Ajax 纯js的书写样式1

搭建项目 建立一个Djano项目,建立一个app,建立路径,视图函数大多为render, Ajax的创建 urls.py path(index/,views.index), path(index2/,views.index2), views.py def index(request):return render(request,01.html) def index2(requ…...

谈谈node架构中的线程进程的应用场景、事件循环及任务队列

本文作者系360奇舞团前端开发工程师 文章标题:谈谈node架构中的线程进程的应用场景、事件循环及任务队列 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,nodejs是单线程执行的,它基于事件驱动和非阻塞I/O模型进行多任务的执行。在理…...

http代理IP它有哪些应用场景?如何提升访问速度?

随着互联网的快速发展,越来越多的人开始关注网络速度和安全性。其中,代理IP技术作为一种有效的网络加速和安全解决方案,越来越受到人们的关注。那么,http代理IP有哪些应用场景?又如何提升访问速度呢? 一、h…...

Armv8/Armv9的VIPT的别名问题是如何解决的

https://www.cse.unsw.edu.au/~cs9242/02/lectures/03-cache/node8.html https://developer.arm.com/documentation/ddi0406/b/System-Level-Architecture/Virtual-Memory-System-Architecture–VMSA-/Address-mapping-restrictions...

java/javaswing/窗体程序,人脸识别系统,人脸追踪,计算机视觉

源码下载地址 支持:远程部署/安装/调试、讲解、二次开发/修改/定制 源码下载地址...

设计模式(16)迭代器模式

一、介绍: 1、定义:迭代器模式 (Iterator Pattern) 是一种行为型设计模式,它提供一种顺序访问聚合对象(如列表、集合等)中的元素,而无需暴露聚合对象的内部表示。迭代器模式将遍历逻辑封装在一个迭代器对象…...

Openssl数据安全传输平台011:秘钥协商服务端

0. 代码仓库 https://github.com/Chufeng-Jiang/OpenSSL_Secure_Data_Transmission_Platform/tree/main/Preparation 编译protobuf类文件 VS2022 protobuf3.17 Message.proto protoc Message.proto --cpp_out./...

【23种设计模式】里氏替换原则

个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...

嵌入式系统设计师考试笔记之操作系统基础复习笔记一

目录 1、嵌入式软件基础 (1)嵌入式软件的特点: (2)嵌入式软件分类: (3)无操作系统的嵌入式软件的两种实现方式: (4)有操作系统的三大优点&am…...

Unity开发之观察者模式(事件中心)

观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者&#…...

16、window11+visual studio 2022+cuda+ffmpeg进行拉流和解码(RTX3050)

基本思想:需要一个window11 下的gpu的编码和解码代码,逐开发使用,先上个图 几乎0延迟的,使用笔记本的显卡 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\extras\demo_suite>deviceQuery.exe deviceQuery.exe Starting...CUDA Device Query (Runtime API…...

【C++笔记】如何用检查TCP或UDP端口是否被占用

一、检查步骤 使用socket函数创建socket_fd套接字。使用sockaddr_in结构体配置协议和端口号。使用bind函数尝试与端口进行绑定,成功返回0表示未被占用,失败返回-1表示已被占用。 二、步骤详解 2.1 socket函数 socket 函数是用于创建套接字的函数&…...

“华为杯”研究生数学建模竞赛2015年-【华为杯】D题:面向节能的单/多列车优化决策问题

目录 摘 要: 一、问题重述 二、模型假设 三、符号说明 四、问题一求解...

『第三章』雨燕栖息地:Swift 开发环境

在本篇博文中,您将学到如下内容: 1. Swift 开发平台2. Swift 集成开发环境 Xcode?3. 原型试验场:Playground4. 另一种尝试:iPad 上的 Swift Playgrounds5. Swift 交互实验室:Swift REPL总结 咫尺春三月,寻常百姓家。为…...

elasticsearch-5.6.15集群部署,如何部署x-pack并添加安全认证

目录 一、环境 1、JDK、映射、域名、三墙 2、三台服务器创建用户、并为用户授权 二、配置elasticsearch-5.6.15实例 1、官网获取elasticsearch-5.6.15.tar.gz,拉取到三台服务器 2、elas环境准备 3、修改elasticsearch.yml配置 4、修改软、硬件线程数 5、修改…...

C++ list 模拟实现

目录 1. 基本结构的实现 2. list() 3. void push_back(const T& val) 4. 非 const 迭代器 4.1 基本结构 4.2 构造函数 4.3 T& operator*() 4.4 __list_iterator& operator() 4.5 bool operator!(const __list_iterator& it) 4.6 T* operator->…...

Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (三)

这是继之前文章: Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (一) Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (二&…...

主流电商平台价格如何高频监测

双十一来临在即,除了商家很兴奋,品牌和消费者同样持续关注,除了关注不同平台的产品上架情况,价格也是这些渠道参与者最为关注的,品牌需要通过掌握各店铺的价格情况,了解市场情况以及各经销商的渠道治理现状…...

Spring关于注解的使用

目录 一、使用注解开发的前提 1.1 配置注解扫描路径 二、使用注解创建对象 2.1 Controller(控制器储存) 2.2 Service(服务储存) 2.3 Repository(仓库储存) 2.4 Component(组件储存) …...

ArcSWAT建模踩坑记:你的土壤数据库参数算对了吗?聊聊SPAW的那些默认值和单位陷阱

ArcSWAT土壤参数校准实战:避开SPAW计算中的5个致命误区 当水文模拟结果与实测数据出现系统性偏差时,经验丰富的建模者会首先检查土壤参数——这个隐藏在界面背后的"沉默变量"往往是误差的最大来源。SPAW作为ArcSWAT推荐的土壤参数计算工具&…...

终极指南:10分钟掌握SPT-AKI存档编辑器完整使用教程

终极指南:10分钟掌握SPT-AKI存档编辑器完整使用教程 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/gh_mirrors/sp/…...

高考解析几何“秒杀”技巧:用极点极线快速搞定椭圆定点定值难题

高考解析几何“秒杀”技巧:用极点极线快速搞定椭圆定点定值难题 解析几何作为高考数学的压轴题型,常常让考生望而生畏。面对复杂的计算和抽象的条件,如何在有限时间内快速找到突破口?极点极线理论作为高等几何中的重要工具&#x…...

如何3步免费解锁WeMod专业版:2026年终极增强工具使用指南

如何3步免费解锁WeMod专业版:2026年终极增强工具使用指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的订阅费用而犹豫…...

3分钟掌握Seraphine:英雄联盟智能助手完全指南

3分钟掌握Seraphine:英雄联盟智能助手完全指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine是一款基于英雄联盟官方LCU API开发的智能游戏助手,通过自动BP系统和实时战绩查…...

从零构建团队技能仓库:结构化知识管理与VuePress实践

1. 项目概述:一个技能仓库的诞生与价值 最近在整理团队内部的技术资产时,我一直在思考一个问题:如何让那些散落在个人笔记、项目代码片段、会议纪要里的“隐性知识”和“最佳实践”沉淀下来,变成团队可复用、可传承的“显性资产”…...

基于CLUE与加速度计的鸡蛋坠落实验:从传感器数据到缓冲设计优化

1. 项目概述:用传感器数据为物理实验“上保险” 鸡蛋坠落实验,一个听起来就充满童年乐趣和“悲剧”风险的经典物理项目。它的核心挑战在于,如何设计一个缓冲装置,让一枚脆弱的生鸡蛋从高处坠落而不破裂。传统上,我们依…...

Arm Cortex-A35 Cycle Model技术解析与SoC集成实战

1. Arm Cortex-A35 Cycle Model技术解析在SoC设计领域,虚拟平台验证已成为不可或缺的关键环节。作为Armv8-A架构中的能效比优化核心,Cortex-A35处理器通过Cycle Model提供了RTL级精度的硬件行为模拟能力。我在多个车载SoC项目中验证发现,其Cy…...

Excalidraw草图AI技能:从图形解析到自动化代码生成实战

1. 项目概述:一个能“读懂”你草图的AI技能如果你经常用Excalidraw画流程图、架构图或者UI草图,那你一定遇到过这样的场景:画完一张图,想把它整理成文档,或者想基于这张图生成一些代码,又或者想让它自己动起…...

基于Go的轻量级自托管IM系统OpenWhisp部署与架构解析

1. 项目概述:一个开源的即时通讯解决方案最近在折腾一个内部协作工具,需要集成一个轻量级的即时通讯模块。市面上成熟的方案不少,但要么是SaaS服务,数据不在自己手里,心里不踏实;要么是像Rocket.Chat、Matt…...