深度学习评价指标: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 precision

precision = 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_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])  # 预测标签

def calculate_recall(y_true, y_pred):
    recall = recall_score(y_true, y_pred)
    return recall

recall = 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_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])  # 预测标签

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 f1

f1 = 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_matrix

def 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 - intersection
    iou = intersection / union
    return iou

def 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_matrix

def 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 dice

def 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):衡量模型在分割任务中的效果,尤其对小目标更加敏感。

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

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

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

相关文章

[leetcode]beautiful-arrangement. 优美的排列

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<vector<int>> match;vector<int> vis;int num;void backtrack(int index, int n) {if (index n 1) {num;return;}for (auto &x : match[index]) {if (!vis[x]) {vis[x] tru…

【C++】宏定义

严格来说&#xff0c;这个题目起名为C是不合适的&#xff0c;因为宏定义是C语言的遗留特性。CleanCode并不推荐C中使用宏定义。我当时还在公司做过宏定义为什么应该被取代的报告。但是适当使用宏定义对代码是有好处的。坏处也有一些。 无参宏定义 最常见的一种宏定义&#xf…

Python 面试【中级】

欢迎莅临我的博客 &#x1f49d;&#x1f49d;&#x1f49d;&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【游戏引擎之路】登神长阶(五)

5月20日-6月4日&#xff1a;攻克2D物理引擎。 6月4日-6月13日&#xff1a;攻克《3D数学基础》。 6月13日-6月20日&#xff1a;攻克《3D图形教程》。 6月21日-6月22日&#xff1a;攻克《Raycasting游戏教程》。 6月23日-6月30日&#xff1a;攻克《Windows游戏编程大师技巧》。 …

厦门新能安科技Ampace校招实习待遇及Verify测评SHL演绎数字推理历年真题题库

一、厦门新能安科技公司介绍 厦门新能安科技有限公司主要业务包括电池制造和销售&#xff0c;电容器及其配套设备制造与销售&#xff0c;电池零配件生产与销售。此外&#xff0c;公司还提供包括技术服务、技术开发、技术咨询、技术交流、技术转让和技术推广在内的全方位服务。公…

安卓开发app-基础的java项目构建补充知识

安卓开发app-基础的java项目构建补充知识&#xff01;上一次分享了基础的项目构建&#xff0c;但是还遗漏了一些基础的内容。今天补充完整。 首先&#xff0c;是关于项目的一些配置文件的信息。 第一个配置文件&#xff1a;{setting.gradle} 国内阿里云仓库地址信息&#xff1…

深度学习基准模型Mamba

深度学习基准模型Mamba Mamba(英文直译&#xff1a;眼镜蛇)具有选择性状态空间的线性时间序列建模&#xff0c;是一种先进的状态空间模型 (SSM)&#xff0c;专为高效处理复杂的数据密集型序列而设计。 Mamba是一种深度学习基准模型&#xff0c;专为处理长序列数据而设计&…

WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新

在智能时代的浪潮汹涌澎湃之际&#xff0c;算法已成为推动社会进步的核心力量。作为中国认知智能技术的领军企业&#xff0c;华院计算在人工智能的广阔天地中&#xff0c;不断探索、创新&#xff0c;致力于将算法的潜力发挥到极致。在过去的时日里&#xff0c;华院计算不断探索…

界面控件Telerik UI for Winforms 2024 Q2新版亮点 - 发布全新的AI相关组件

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件&#xff0c;所有的UI for WinForms控件都具有完整的主题支持&#xff0c;可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 本文将介绍界面组件Telerik UI for Winform…

4个文章生成器免费版分享,让文章创作更轻松便捷

在当今这个信息飞速传播的时代&#xff0c;文章创作的重要性愈发凸显。无论是从事内容创作的专业人士&#xff0c;还是偶尔需要撰写文章的普通大众&#xff0c;都希望能更高效地完成文章创作任务。而在实际操作中&#xff0c;我们常常会遇到思路卡顿、没有创作灵感的问题。今天…

AWT的菜单组件

AWT的菜单组件 前言一、菜单组件的介绍常见的菜单相关组件常见菜单相关组件集成体系图菜单相关组件使用小要点 二、AWT菜单组件的代码示例示例一示例二实现思路 前言 推荐一个网站给想要了解或者学习人工智能知识的读者&#xff0c;这个网站里内容讲解通俗易懂且风趣幽默&…

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

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

同元软控受邀出席2024年工业软件与新质生产力创新发展论坛

近日&#xff0c;由广东省工业软件学会主办的“2024年工业软件与新质生产力创新发展论坛”在广州成功举办。同元软控深圳子公司副总经理周胜受邀出席&#xff0c;并作《数智驱动创新&#xff0c;科学计算与系统建模仿真加速新质生产力进化》主题演讲。 本次论坛集结工业软件界…

用pycharm进行python爬虫的步骤

使用 pycharm 进行 python 爬虫的步骤&#xff1a;下载并安装 pycharm。创建一个新项目。安装 requests 和 beautifulsoup 库。编写爬虫脚本&#xff0c;包括获取页面内容、解析 html 和提取数据的代码。运行爬虫脚本。保存和处理提取到的数据。 用 PyCharm 进行 Python 爬虫的…

【日常记录】【JS】SSE 流式传输 ChatGPT 的网络传输模式

文章目录 1、SSE 流式传输2、后端代码3、前端代码5、SSE和WS 对比6、chatgpt SSE的服务端返回的数据参考链接 单工通信是一种单向的通信方式&#xff0c;其中信息只能从发送端传输到接收端&#xff0c;而接收端不能向发送端发送任何信息。在Web开发中&#xff0c;Server-Sent E…

【UML用户指南】-24-对高级行为建模-进程和线程

目录 1、概念 2、主动类 3、通信 4、同步 5、常用建模技术 5.1、对多控制流建模 5.2、对进程间通信建模 在UML中&#xff0c;可以将每一个独立的控制流建模为一个主动对象&#xff0c;它代表一个能够启动控制活动的进程或线程。 进程是一个能与其他进程并发执行的重量级…

chrome.storage.local.set 未生效

之前chrome.storage.local.set 和 get 一直不起作用 使用以下代码运行成功。 chrome.storage.local.set({ pageState: "main" }).then(() > {console.log("Value is set");});chrome.storage.local.get(["pageState"]).then((result) > …

JAVA学习笔记-JAVA基础语法-DAY19-File类、递归

第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示&#xff0c;主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) &#xff1a;通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(St…

〔002〕虚幻 UE5 发送 get、post 请求、读取 json 文件

✨ 目录 ▷ 安装 varest 扩展▷ 开启 varest 扩展▷ 发送 get 请求▷ 发送 post 请求▷ 读取 json 文件 ▷ 安装 varest 扩展 打开 虚幻商城&#xff0c;搜索 varest 关键字进行检索&#xff0c; varest 是一个 api 调用插件&#xff0c;支持 http/https 请求&#xff0c;也支…