深度学习评价指标:Precision, Recall, F1-score, mIOU, 和 mDice

在深度学习和机器学习中,评价模型性能是至关重要的一环。本文将详细讲解一些常见的评价指标,包括精确率(Precision)、召回率(Recall)、F1-score、平均交并比(mIOU)和平均Dice系数(mDice)。这些指标广泛应用于分类和语义分割任务中。

1. 精确率(Precision)

精确率是指在所有被模型预测为正类的样本中,真正为正类的比例。其计算公式为:

[ \text{Precision} = \frac{TP}{TP + FP} ]

其中,TP(True Positive)是真正类,FP(False Positive)是假正类。

代码示例:
import numpy as np
from sklearn.metrics import precision_score# 模拟一些预测标签和真实标签
y_true = np.array([0, 1, 1, 1, 0, 1, 0, 0, 1, 0])  # 真实标签
y_pred = np.array([0, 1, 0, 1, 0, 1, 0, 1, 1, 0])  # 预测标签# 计算Precision
def calculate_precision(y_true, y_pred):precision = precision_score(y_true, y_pred)return precisionprecision = calculate_precision(y_true, y_pred)
print(f"Precision: {precision:.2f}")

2. 召回率(Recall)

召回率是指在所有实际为正类的样本中,被模型正确预测为正类的比例。其计算公式为:

[ \text{Recall} = \frac{TP}{TP + FN} ]

其中,FN(False Negative)是假负类。

代码示例:
import numpy as np
from sklearn.metrics import recall_scorey_true = np.array([0, 1, 1, 1, 0, 1, 0, 0, 1, 0])  # 真实标签
y_pred = np.array([0, 1, 0, 1, 0, 1, 0, 1, 1, 0])  # 预测标签def calculate_recall(y_true, y_pred):recall = recall_score(y_true, y_pred)return recallrecall = calculate_recall(y_true, y_pred)
print(f"Recall: {recall:.2f}")

3. F1-score

F1-score是精确率和召回率的调和平均数,其公式为:

[ \text{F1分数} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} ]

代码示例:
import numpy as np
from sklearn.metrics import precision_score, recall_score, f1_scorey_true = np.array([0, 1, 1, 1, 0, 1, 0, 0, 1, 0])  # 真实标签
y_pred = np.array([0, 1, 0, 1, 0, 1, 0, 1, 1, 0])  # 预测标签def calculate_f1_score(y_true, y_pred):precision = precision_score(y_true, y_pred)recall = recall_score(y_true, y_pred)f1 = f1_score(y_true, y_pred)return f1f1 = calculate_f1_score(y_true, y_pred)
print(f"F1 Score: {f1:.2f}")

4. 平均交并比(mIOU)

平均交并比(mIOU)是语义分割任务中常用的评价指标,计算公式为:

[ \text{IOU} = \frac{\text{交集}}{\text{并集}} ]

在多类语义分割中,mIOU是对每个类别的IOU取平均。公式如下:

[ \text{mIOU} = \frac{1}{C} \sum_{i=1}^{C} \text{IOU}_i ]

代码示例:
import numpy as np
from sklearn.metrics import confusion_matrixdef calculate_iou(conf_matrix):intersection = np.diag(conf_matrix)ground_truth_set = conf_matrix.sum(axis=1)predicted_set = conf_matrix.sum(axis=0)union = ground_truth_set + predicted_set - intersectioniou = intersection / unionreturn ioudef calculate_miou(y_true, y_pred, num_classes):conf_matrix = confusion_matrix(y_true, y_pred, labels=np.arange(num_classes))iou = calculate_iou(conf_matrix)miou = np.nanmean(iou)return miou# 模拟数据
y_true = np.array([0, 1, 1, 2, 2, 2, 0, 1, 0, 2])
y_pred = np.array([0, 1, 0, 2, 1, 2, 0, 2, 0, 2])
num_classes = 3  # 类别数量miou = calculate_miou(y_true, y_pred, num_classes)
print(f"mIOU: {miou:.2f}")

5. 平均Dice系数(mDice)

平均Dice系数(mDice)是衡量模型在分割任务中的效果,其公式为:

[ \text{Dice} = \frac{2 \times \text{交集}}{\text{真实标签的像素数} + \text{预测标签的像素数}} ]

在多类语义分割中,mDice是对每个类别的Dice系数取平均。公式如下:

[ \text{mDice} = \frac{1}{C} \sum_{i=1}^{C} \text{Dice}_i ]

代码示例:
import numpy as np
from sklearn.metrics import confusion_matrixdef calculate_dice(conf_matrix):intersection = np.diag(conf_matrix)ground_truth_set = conf_matrix.sum(axis=1)predicted_set = conf_matrix.sum(axis=0)dice = (2 * intersection) / (ground_truth_set + predicted_set)return dicedef calculate_mdice(y_true, y_pred, num_classes):conf_matrix = confusion_matrix(y_true, y_pred, labels=np.arange(num_classes))dice = calculate_dice(conf_matrix)mdice = np.nanmean(dice)return mdice# 模拟数据
y_true = np.array([0, 1, 1, 2, 2, 2, 0, 1, 0, 2])
y_pred = np.array([0, 1, 0, 2, 1, 2, 0, 2, 0, 2])
num_classes = 3  # 类别数量mdice = calculate_mdice(y_true, y_pred, num_classes)
print(f"mDice: {mdice:.2f}")

总结

  • 精确率(Precision):衡量模型预测的正类样本中实际为正类的比例。
  • 召回率(Recall):衡量模型对实际正类样本的识别能力。
  • F1-score:精确率和召回率的调和平均数。
  • 平均交并比(mIOU):衡量模型在语义分割任务中的整体性能。
  • 平均Dice系数(mDice):衡量模型在分割任务中的效果,尤其对小目标更加敏感。

通过理解和应用这些评价指标,可以更全面地评估模型的性能,从而更好地改进模型。如果有任何问题或需要进一步的解释,欢迎在评论区留言。

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

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

相关文章

5.6 0-1背包问题

#include<iostream> #include<string> #include<stdlib.h> #include<bits/stdc.h> using namespace std;int c;//背包容纳的重量 int n;//物品数量 int cw;//当前重量 int cv;//当前价值 int bestv;//当前最优价值 int x[100]; int bestx[100]; struct…

Linux 交叉编译工具链格式 sqlite3编译示例

1、交叉编译工具链 1.1 定义 交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发工具集&#xff0c;它允许开发者在一个平台上&#xff08;例如高性能的PC或服务器&#xff09;编译生成另一个平台&#xff08;例如嵌入式系统或不同的操作系统和硬件架构&#xff09…

pyqt 文件浏览列表视图和图标视图

pyqt 文件浏览列表视图和图标视图 目的效果代码 目的 使用pyqt实现文件浏览列表视图和图标视图&#xff0c;像电脑文件浏览一样。如下图所示。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QToolBar, QAction, Q…

03-权限绕过漏洞

一、基础知识 水平越权 水平越权是指用户在系统中拥有超出其权限范围的访问权限。这可能导致安全漏洞和潜在的风险&#xff0c;因为用户可以访问他们不应该有权访问的敏感信息或执行他们不应该执行的操作。 垂直越权 垂直越权是指用户或攻击者利用系统中的漏洞或错误配置&a…

Orangepi Zero2使用外设驱动库wiringOP配合定时器驱动SG90舵机

目录 一、舵机的基本认知和硬件接线 1.1 舵机的基本认知&#xff1a; 1.2 硬件接线&#xff1a; 1.3 怎么控制舵机旋转不同的角度&#xff1a; 二、Linux定时器 2.1 定时器setitimer()函数原型和头文件&#xff1a; 2.2 信号处理函数signal()原型和头文件&#xff1a; 2…

<电力行业> - 《第10课:变电》

1 变电 变电环节&#xff0c;顾名思义就是改变电压的环节&#xff0c;主要是在变电站和变电所完成的。变电站和变电所主要区别在于&#xff1a;变电站比变电所更大。 发电厂的变压器和配电变压器也属于“变电”&#xff0c;但我们在说电网环节时&#xff0c;变电特指电网公司…

【STM32嵌入式系统设计与开发---传感器拓展】——1_4_标准库FreeRTOS移植实验

目录 雅俗理解源码下载链接知识拓展步骤1&#xff1a;stm32f103vet6移植freeRTOS步骤:&#xff08;1&#xff09;准备开发环境&#xff08;2&#xff09;添加FreeRTOS移植 致谢 雅俗理解 雅&#xff1a;FreeRTOS是一个开源的实时操作系统&#xff08;RTOS&#xff09;&#xf…

RabbitMQ-交换机的类型以及流程图练习-01

自己的飞书文档:‌‍‬‍‬‍​‍‬​⁠‍​​​‌⁠​​‬‍​​​‬‬‌​‌‌​​&#xfeff;​​​​&#xfeff;‍​‍​‌&#xfeff;⁠‬&#xfeff;&#xfeff;&#xfeff;​RabbitMQ的流程图和作业 - 飞书云文档 (feishu.cn) 作业 图片一张 画rabbit-mq 消息发…

测试开发工程师需要掌握什么技能?

测试开发工程师是软件开发中至关重要的角色之一。他们负责编写、维护和执行自动化测试脚本、开发测试工具和框架&#xff0c;以确保软件的质量和稳定性。为了成为一名优秀的测试开发工程师&#xff0c;你需要掌握以下技能&#xff1a; 1. 编程技能&#xff1a; 作为测试开发工…

LabVIEW程序员应该怎么提高自己的工作能力?

作为一名LabVIEW程序员&#xff0c;提升工作能力可以从以下几个方面入手&#xff1a; 1. 深入理解LabVIEW基础 掌握LabVIEW编程语言&#xff1a;熟悉LabVIEW的图形化编程方式&#xff0c;理解其数据流编程模型。熟悉常用的VI&#xff08;虚拟仪器&#xff09;和函数&#xff1…

计算机网络原理及应用

第一章 计算机网络概述 【1】局域网 局域网是指在某一区域内由多台计算机互联而成的计算机通信网络。 【1】互通 两个网络之间可以交换数据。 第二章 计算机网络的体系结构 【1】语义 何时发出何种控制信息&#xff0c;完成何种动作以及做出何种响应。 【2】简述网络协…

有没有比较好用的网页3D应用程序在线编辑器?

问&#xff1a;three.js是当前主流的网页3d开发框架&#xff0c;但three.js的editor功能比较粗糙。国内有没有比较容易上手功能类似Unity3D的网页3D编辑软件&#xff0c;可以通过实体组件系统来完成程序扩展&#xff0c;简单拖拉拽完成3D场景、常用特效和用户交互的构建&#x…

大模型压缩-LoRAP

这里写目录标题 1.多头注意力和FFN的权重分布2 多头矩阵的低秩分解FFN无梯度通道剪枝 这篇文章 1期望找到一个“剪枝&#xff0b;低秩分解”的路子&#xff0c;使结构化剪枝达到非结构化剪枝的性能。 1.多头注意力和FFN的权重分布 Fig. 1.1 多头注意力权重矩阵 从Fig.1.1可以看…

清华大学世界排名:2025QS世界大学排名第20名

近日&#xff0c;国际高等教育研究机构QS Quacquarelli Symonds正式发布了2025QS世界大学排名&#xff0c;其中麻省理工学院连续第13年蝉联榜首&#xff0c;北京大学排名由去年的全球第17上升至全球第14名&#xff0c;清华大学位列2025QS世界大学排名第20名&#xff0c;以下是查…

2024.6.30周报

目录 摘要 ABSTRACT 一、文献阅读 一、题目 二、摘要 三、模型架构 四、文章解读 一、Introduction 二、创新点 三、RBM 四、贪心算法 五、实验 六、结论 二、代码复现 总结 摘要 本周我阅读了一篇题目为Generative Pre-Trained Physics-Informed Neural Netwo…

ThreadPoolExecutor 线程回收时机详解

个人博客 ThreadPoolExecutor 线程回收时机详解 | iwts’s blog 总集 想要完整了解下ThreadPoolExecutor&#xff1f;可以参考&#xff1a; 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog Worker-工作线程管理 线程池设计了内部类Worker&#xff0c;主要是用来…

点餐|外卖订餐小程序|基于微信小程序的外卖订餐系统设计与实现(源码+数据库+文档)

点餐|外卖订餐小程序目录 目录 基于微信小程序的外卖订餐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户微信端功能模块 2、管理员服务端功能模块 3、商家务端功能模块 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…

重生奇迹MU 正确获取金币的方式

在游戏中&#xff0c;需要消耗大量的金币来购买红药等物品。因此&#xff0c;如何快速赚取金币也成为玩家关注的问题。您知道有哪些方法可以快速地获得金币吗&#xff1f; 一、哪个地图上是最适合打金币的很关键 在选择打钱的地方时&#xff0c;不能盲目行动&#xff0c;需要…

【C++开发必备工具】Dependency Walker与Dependencies

Dependency Walker 与 Dependencies 1. Dependency Walker1.1 功能特点1.2 使用方法1.3 注意事项 2. Dependencies2.1 功能特点2.2 使用方法2.3 注意事项 3. 总结 1. Dependency Walker Dependency Walker 是一个免费软件工具&#xff0c;用于查看 Windows 应用程序的模块&…

[数据集][目标检测]婴儿状态睡觉哭泣检测数据集VOC+YOLO格式7109张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;7109 标注数量(xml文件个数)&#xff1a;7109 标注数量(txt文件个数)&#xff1a;7109 标注…