【混淆矩阵】Confusion Matrix!定量评价的基础!如何计算全面、准确的定量指标去衡量模型分类的好坏??

【混淆矩阵】Confusion Matrix!定量评价的基础!

如何计算全面、准确的定量指标去衡量模型分类的好坏??


文章目录

  • 【混淆矩阵】Confusion Matrix!定量评价的基础!
  • 1. 混淆矩阵
  • 2.评价指标
  • 3.混淆矩阵及评价指标的实现(Python代码示例)
  • 4.多分类问题中的评价指标
  • 5.总结


在深度学习的分类问题中,二分类和多分类的结果常用混淆矩阵(Confusion Matrix)来呈现。此外,还有许多评价指标用于衡量模型性能,比如精度(Accuracy)、查准率(Precision)、召回率(Recall)、F1值等。

1. 混淆矩阵

对于二分类问题,混淆矩阵通常是一个 2 × 2 2×2 2×2 的矩阵:
在这里插入图片描述

  • TP(True Positive): 预测为正类,且实际为正类。
  • FP(False Positive): 预测为正类,但实际为负类。
  • FN(False Negative): 预测为负类,但实际为正类。
  • TN(True Negative): 预测为负类,且实际为负类。

对于多分类问题,混淆矩阵的维度为 n × n n×n n×n,其中 n n n 是类别数量。每个元素 C i j C_{ij} Cij表示实际类别 i i i被预测为类别 j j j的次数。

2.评价指标

  • 精度(Accuracy)
    精度是所有预测正确的比例,计算公式为:
    在这里插入图片描述
  • 查准率(Precision)
    查准率衡量的是模型在预测为正类的样本中,实际为正类的比例:
    在这里插入图片描述
  • 召回率(Recall)
    召回率衡量的是在所有实际为正类的样本中,模型能正确预测为正类的比例:
    在这里插入图片描述
  • F1值(F1-Score)
    F1值是 Precision 和 Recall 的调和平均数,用来平衡查准率和召回率:
    在这里插入图片描述
  • 特异度(Specificity)
    特异度衡量的是在所有实际为负类的样本中,模型能正确预测为负类的比例:
    在这里插入图片描述
  • ROC曲线与AUC
    ROC曲线: 以假正率(FPR)为横轴,真正率(TPR,即召回率)为纵轴的曲线。
    AUC(Area Under Curve): ROC曲线下的面积,表示模型分类能力。
    FPR 公式为:
    在这里插入图片描述

3.混淆矩阵及评价指标的实现(Python代码示例)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score, roc_curve, auc
import seaborn as sns# 模拟真实标签和预测标签
y_true = [0, 1, 1, 0, 1, 0, 1, 0, 0, 1]
y_pred = [0, 0, 1, 0, 1, 0, 1, 1, 0, 1]# 计算混淆矩阵
cm = confusion_matrix(y_true, y_pred)
print("Confusion Matrix:\n", cm)# 混淆矩阵的可视化
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()# 计算各项评价指标
accuracy = accuracy_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)print(f'Accuracy: {accuracy}')
print(f'Precision: {precision}')
print(f'Recall: {recall}')
print(f'F1 Score: {f1}')# 计算并绘制ROC曲线
fpr, tpr, thresholds = roc_curve(y_true, y_pred)
roc_auc = auc(fpr, tpr)
plt.plot(fpr, tpr, color='blue', label=f'AUC = {roc_auc:.2f}')
plt.plot([0, 1], [0, 1], 'r--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend(loc="lower right")
plt.show()

4.多分类问题中的评价指标

在多分类问题中,Precision、Recall 和 F1值可以通过**微平均(micro average)和宏平均(macro average)**来计算:

  • 微平均:对所有类的 TP、FP、FN 求和后再计算指标。
  • 宏平均:分别计算每个类别的 Precision、Recall 和 F1,然后取平均。
    你可以通过 average 参数在 sklearn 的 Precision_score、Recall_score 和 F1_score 中选择不同的方式:
# 多分类示例
y_true_multi = [0, 1, 2, 1, 2, 0, 1, 2, 0, 1]
y_pred_multi = [0, 2, 1, 1, 2, 0, 1, 2, 0, 2]# 计算宏平均和微平均
precision_macro = precision_score(y_true_multi, y_pred_multi, average='macro')
precision_micro = precision_score(y_true_multi, y_pred_multi, average='micro')print(f'Macro Average Precision: {precision_macro}')
print(f'Micro Average Precision: {precision_micro}')

5.总结

  • 混淆矩阵提供了一个直观的工具来查看模型的预测效果。

  • 评价指标如精度、查准率、召回率、F1值等用于量化模型性能。

  • 多分类问题中,可以使用宏平均和微平均来评价模型在多个类别上的表现。

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

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

相关文章

Mysql InnoDB 存储引擎简介

InnoDB 存储引擎是 Mysql 的默认存储引擎,它是由 Innobase Oy 公司开发的 Mysql 为什么默认使用 InnoDB 存储引擎 InnoDB 是一款兼顾高可靠性和高性能的通用存储引擎 在 Mysql 5.5 版本之前,默认是使用 MyISAM 存储引擎,在 5.5 及其之后版…

【红动中国-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

Java原生HttpURLConnection实现Get、Post、Put和Delete请求完整工具类分享

这里博主纯手写了一个完整的 HTTP 请求工具类,该工具类支持多种请求方法,包括 GET、POST、PUT 和 DELETE,并且可以选择性地使用身份验证 token。亲测可用,大家可以直接复制并使用这段代码,以便在自己的项目中快速实现 …

powerbi -L10-文件夹内的文件名

powerbi -L10-文件夹内的文件名 Folder.Contents letSource Folder.Contents("\\your_folder\ your_folder "),#"Removed Other Columns" Table.SelectColumns(Source,{"Name", "Date modified", "Folder Path"}), in#&q…

云原生信息安全:筑牢数字化时代的安全防线

云原生信息安全:筑牢数字化时代的安全防线 一、云原生信息安全概述 云原生安全包含两层重要含义。一方面,面向云原生环境的安全,目标是防护云原生环境中的基础设施、编排系统和微服务等系统的安全。在云原生内部,安全机制多以云原…

7个提升网站分页体验的 CSS 和 JavaScript 代码片段

文章目录 前言正文1.简洁直观的悬停分页效果2.实时显示页码的分页3.适合响应式设计的多功能分页4.专为移动设备优化的分页5.无数字的极简分页设计6.触屏友好的分页7.结合无限滚动与分页的设计 总结 前言 分页是内容丰富的网站中不可缺少的导航工具,能帮助用户更轻松…

【数据结构】什么是二叉搜索(排序)树?

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌二叉搜索(排序)树的概念 📌二叉搜索(排序)树的操作 🎏二叉搜索树的查找 🎏二叉搜索树的插入 🎏二叉搜索树的…

how can I train a OpenAI fine tuned model with more prompts

题意:我如何使用更多提示来训练一个 OpenAI 微调模型? 问题背景: I fine-tuned OpenAI model with some prompts following this documentation it succeeded and created a new model in the playground. How I can retrain (fine-tune) th…

邮件营销:助力企业转换客户,提升曝光率

邮件营销:独立站推广的关键策略 在独立站推广的众多方法中,邮件营销占据着重要地位。本文将为刚刚接触独立站运营的新手介绍邮件营销的基础知识。在信息泛滥的时代,开设一个店铺和成功地引流并不意味着一劳永逸。对于绝大多数中小型电商企业…

AIGC实战之如何构建出更好的大模型RAG系统

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

感知器神经网络

1、原理 感知器是一种前馈人工神经网络,是人工神经网络中的一种典型结构。感知器具有分层结构,信息从输入层进入网络,逐层向前传递至输出层。根据感知器神经元变换函数、隐层数以及权值调整规则的不同,可以形成具有各种功能特点的…

matlab模拟时间有负数的信号频谱

真实还原频谱,要做一次fftshift 直接fft,得到的频谱有线性偏移

高级大数据开发学习路线指南

掌握大数据技术是一项系统性工程,涉及到广泛的技能和专业知识。为了帮助初学者构建坚实的基础,并逐步成长为大数据领域的专家,下面详细阐述了一条全面而深入的学习路线: 1. Java 编程基础 - 打造坚实的底层技能 关键知识点&…

C++对象拷贝时的优化编译

在现代编译器中,当我们在 C中进行对象的拷贝操作时,编译器并非只是机械地执行逐字节的复制。相反,它会进行优化,避免不必要的拷贝构造等等,这种优化包括“返回值优化”(RVO),“拷贝省…

kubernetes调度2

1、各种缩写的应用 [rootk8s-master test]# kubectl get rsNAME DESIRED CURRENT READY AGEtest001-64c7957b5c 2 2 2 8m59stest001-698b98bb8f 0 0 0 12m[rootk8s-master test]# kubectl get replicas…

XML映射器-动态sql

01-动态sql 1.实现动态条件SQL 第一种方法在sql语句中加入where 11其他条件都加and就行,这样就可以根据if条件来判断要传递的参数可以有几个 第二种方法用where标签给if语句包起来 where标签的作用如下图 第三种方法用trim标签解释如下图 用choose也可以实现条件查询如下图,…

【RabbitMQ】死信队列、延迟队列

死信队列 死信,简单理解就是因为种种原因,无法被消费的消息。 有死信,自然就有死信队列。当一个消息在一个队列中变成死信消息之后,就会被重新发送到另一个交换器中,这个交换器就是DLX(Dead Letter Excha…

C++入门 之 类和对象(下)

目录 一、初始化列表 二、隐式类型转换与explict 三、静态成员——static 四、友元 五、内部类 六、匿名对象 七.对象拷贝时的编译器优化 一、初始化列表 之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式&…

信奥初赛解析:1-3-计算机软件系统

知识要点 软件系统是计算机的灵魂。没有安装软件的计算机称为“裸机”,无法完成任何工作硬件为软件提供运行平台。软件和硬件相互关联,两者之间可以相互转化,互为补充 计算机软件系统按其功能可分为系统软件和应用软件两大类 一、系统软件 系统软件是指…

SpringCloud微服务实现服务降级的最佳实践

Spring Cloud是一种用于快速构建分布式系统的框架,它提供了许多有用的功能,其中包括服务降级。 服务降级是一种保护机制,它可以在面临高并发或故障时保持服务的稳定性。当系统资源不足或服务出现故障时,服务降级可以通过关闭一些功…