深度学习评价指标: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,一经查实,立即删除!

相关文章

Adobe Magento OR Commerce电子商务系统 XXE漏洞复现(CVE-2024-34102)

0x01 产品简介 Magento最初是一个开源的电子商务平台,后来被Adobe公司收购,并更名为Adobe Commerce,是一个功能丰富、灵活且可扩展的电子商务解决方案。Adobe Commerce提供了强大的定制能力,允许商家根据自己的业务需求进行灵活调整。通过人工智能和机器学习技术,为B2B和…

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…

大数据领域的常用开发语言详解

大数据开发语言主要包括以下几个&#xff0c;以下是它们在大数据开发领域的优缺点和应用场景的详细说明&#xff1a; 1. Java 优点&#xff1a; 跨平台性&#xff1a;Java的“一次编写&#xff0c;到处运行”的特性使得其可以轻松地运行在多个操作系统上。面向对象&#xff…

OpenCV学习之cv2.subtract函数

OpenCV学习之cv2.subtract函数 一、简介 cv2.subtract 是 OpenCV 库中的一个基本函数&#xff0c;用于对两幅图像进行逐像素的减法操作。 二、基本语法 cv2.subtract(src1, src2, dstNone, maskNone, dtypeNone)三、参数说明 src1 (numpy.ndarray): 第一幅输入图像或数组。 …

上海市计算机学会竞赛平台2023年6月月赛丙组差分求和

题目描述 给定一个整数序列&#xff0c;对其中任意两个数&#xff0c;计算后项减前项的差&#xff0c;输出这些差的差。 例如对于 &#x1d44e;1,&#x1d44e;2,&#x1d44e;3,&#x1d44e;4a1​,a2​,a3​,a4​ 来说&#xff0c;输出 (&#x1d44e;2−&#x1d44e;1)…

html2pdf.js生成PDF空白页面问题解决办法

现象 1、Scale参数1.8时&#xff0c;安卓手机在20页以上可能爆掉生成空白页 2、Scale参数1.8时&#xff0c;苹果手机在5页以上可能爆掉生成空白页 原因是浏览器支持画布的尺寸大小限制 解决办法 分页生成&#xff0c;一个元素一页这样不可能超过限制尺寸。 查到解决代码&a…

代码随想录算法训练营第四十五天|198.打家劫舍 213.打家劫舍II 337.打家劫舍III

LeetCode 198.打家劫舍 题目链接&#xff1a;198.打家劫舍 踩坑&#xff1a;很多坑&#xff0c;自动把它当作背包问题了&#xff0c;但其实这就是一个普通的动态规划题目&#xff0c;背包问题本质上是一个二维问题&#xff0c;只是可以简化成一维&#xff0c;想要抽象为背包问…

探索Scala的类型奥秘:协变与逆变全解析

&#x1f504; 探索Scala的类型奥秘&#xff1a;协变与逆变全解析 在Scala的强类型系统中&#xff0c;协变&#xff08;covariance&#xff09;和逆变&#xff08;contravariance&#xff09;是两个核心概念&#xff0c;它们允许我们在泛型编程中更灵活地使用类型。本文将深入…

03-权限绕过漏洞

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

【横穿自动驾驶】读书笔记

我自己&#xff0c;有时候还是有些眼高手低的&#xff0c;但是技术领域多读书大概是没错的。 最近想读完下面这两本书&#xff1a; Feedback control of dynamic systemAlgorithms for Optimization 第二本不用多说&#xff0c;就是求解优化问题的方法综述。横穿自动驾驶系列…

webform 连接连接数据的操作

web-form 查询数据库 &#xff0c;从配置文件中读取字符信息 查询 // 从配置文件中读取数据 string sqlstr // 获取数据库连接字符串ConfigurationManager.ConnectionStrings["staffConnectionString2"].ConnectionString;DataTable dt new DataTable(); // 存储…

《零信任时代的网络安全:2024年的新挑战与机遇》

《零信任时代的网络安全&#xff1a;2024年的新挑战与机遇》 引言 随着数字化转型的深入&#xff0c;网络安全的重要性日益凸显。零信任模型作为新一代网络安全架构&#xff0c;其核心理念是“永不信任&#xff0c;始终验证”。2024年&#xff0c;零信任模型已经成为企业网络…

Build Redundancy at Every Tier(在每一层构建冗余)

Build Redundancy at Every Tier&#xff08;在每一层构建冗余&#xff09; 什么是冗余&#xff1f; 冗余指的是在系统的不同层次&#xff08;或组件&#xff09;中添加备用资源或备份&#xff0c;以确保在部分组件发生故障时&#xff0c;系统仍然能够正常运行。 为什么大型…

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;变电特指电网公司…

嵌入式软件常用测试工具

嵌入式软件常用的测试工具和方法可以总结如下&#xff1a; 测试工具 GDB&#xff1a; 描述&#xff1a;GDB是一个开源的调试工具&#xff0c;常用于GNU编译器集合中&#xff0c;支持多种编程语言&#xff0c;如C、C、Java等。功能&#xff1a;通过命令行与目标应用程序进行交…

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

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

支持向量机(SVM)在机器学习中的简单示例

目录 工作原理 核函数 SVM用于分类 结果分析 结论 ❤❤❤动动发财的小手点点赞点点关注哦~~~❤❤❤ 支持向量机是一种强大的监督学习模型&#xff0c;用于分类和回归任务。它通过找到数据点之间的最优边界来区分不同的类别。SVM特别适用于那些具有清晰边界但线性不可分的…