深入了解多分类混淆矩阵:解读、应用与实例

简介: 深入了解多分类混淆矩阵:解读、应用与实例

🍋引言

在机器学习和数据科学领域,混淆矩阵(Confusion Matrix)是一种重要的工具,用于评估分类模型的性能。虽然混淆矩阵在二分类问题中被广泛使用,但它同样适用于多分类问题。本文将深入探讨多分类混淆矩阵的概念、解读方法、应用场景以及提供一个实际示例来帮助您更好地理解和使用它。

🍋什么是混淆矩阵?

混淆矩阵是一个用于可视化分类模型性能的表格,它将模型的预测结果与实际标签进行比较。对于多分类问题,混淆矩阵的结构可能会略有不同,但基本思想相同。

一个典型的多分类混淆矩阵如下所示:

Class 1   Class 2   Class 3   ...   Class N
Class 1     TP11      TP12      TP13            TP1N
Class 2     TP21      TP22      TP23            TP2N
Class 3     TP31      TP32      TP33            TP3N
  ...         ...       ...       ...             ...
Class N     TPN1      TPN2      TPN3            TPNN

其中,每一行代表实际类别,每一列代表模型的预测类别。矩阵的对角线上的元素(TPii)表示模型正确预测的样本数,而非对角线元素则表示模型错误预测的样本数。

解读混淆矩阵

  • True Positives (TP):模型正确预测为第 i 类的样本数。
  • False Positives (FP):模型错误地预测为第 i 类的样本数。
  • False Negatives (FN):模型错误地预测为非第 i 类的样本数。
  • True Negatives (TN):模型正确预测为非第 i 类的样本数。

🍋混淆矩阵的应用

混淆矩阵为评估分类模型提供了丰富的信息,有助于分析模型的性能和调整模型的参数。以下是一些混淆矩阵的常见应用:

  • 精确度(Accuracy):计算所有类别的正确分类样本数占总样本数的比例,即 (TP1 + TP2 + … + TPN) / (总样本数)。
  • 精确率(Precision):计算模型正确预测为第 i 类的样本数占所有预测为第 i 类的样本数的比例,即 TPi / (TPi + FPi)。
  • 召回率(Recall):计算模型正确预测为第 i 类的样本数占所有实际为第 i 类的样本数的比例,即 TPi / (TPi + FNi)。
  • F1分数(F1-Score):综合考虑了精确率和召回率,用于平衡二者之间的关系,特别适用于不平衡数据集。

🍋实战多分类混淆矩阵

首先需要导一个手写数字识别的数据集并做好数据的准备,本节我们将用它做练习实践

from sklearn.datasets import load_digits
digits = load_digits()
X = digits.data
y = digits.target

此外我们还需要导入如下的一些库

import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix,recall_score,precision_score
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

接下来我们进行数据集的切割以及拟合训练集并进行预测

log_reg = LogisticRegression(max_iter=10000)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.8,random_state=666)
log_reg.fit(X_train,y_train)
log_reg.score(X_test,y_test)

准确率可以看一眼

接下来我们根据逻辑回归好的模型进行预测

y_predict = log_reg.predict(X_test)

并且将混淆矩阵打印出来

confusion_matrix(y_test,y_predict)

运行结果如下

之后我们可以看一看精确率和召回率的值

precision_score(y_test,y_predict,average='micro')
recall_score(y_test,y_predict,average='macro')

运行结果如下

接下来我们将混淆矩阵保存于cfm中,并绘制图像

cfm = confusion_matrix(y_test,y_predict)
plt.matshow(cfm) 

运行结果如下

注意:越明亮的地方代表了错误的越多

我们可以将对角线置0

import numpy as np
row_sum = np.sum(cfm,axis=1)
error_matrix = cfm/row_sum
np.fill_diagonal(error_matrix,0)  # 对角线设置为0

运行结果如下

这样再绘制图像

plt.matshow(error_matrix)

就可以更直观的看出哪里错误率高,方便后面的处理

🍋总结

总结一下,混淆矩阵是评估多分类模型性能的强大工具,它提供了详细的信息,帮助我们了解模型在每个类别上的表现。结合精确度、精确率、召回率和F1分数等指标,可以更全面地评估模型的性能,进而改进模型或进行进一步的分析。深入理解和应用混淆矩阵有助于提高机器学习项目的质量和效果。

挑战与创造都是很痛苦的,但是很充实。

相关文章
|
机器学习/深度学习 算法 数据可视化
小白都能看懂!手把手教你使用混淆矩阵分析目标检测
首先给出定义:在机器学习领域,特别是统计分类问题中,混淆矩阵(confusion matrix)是一种特定的表格布局,用于可视化算法的性能,矩阵的每一行代表实际的类别,而每一列代表预测的类别。
3284 0
小白都能看懂!手把手教你使用混淆矩阵分析目标检测
|
6月前
|
人工智能 JavaScript Shell
AgentRun实践指南:Agent 的宝藏工具—All-In-One Sandbox
AgentRun 推出 All-In-One Sandbox(AIO),一体化集成浏览器、Shell 与代码执行环境,统一文件系统、零配置云上运行。启动快(5秒)、文件访问毫秒级、内存减半,完美支持多步骤自动化、LLM Agent 及人机协同任务。
|
9月前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:六十九、Bootstrap采样在大模型评估中的应用:从置信区间到模型稳定性
Bootstrap采样是一种通过有放回重抽样来评估模型性能的统计方法。它通过从原始数据集中随机抽取样本形成多个Bootstrap数据集,计算统计量(如均值、标准差)的分布,适用于小样本和非参数场景。该方法能估计标准误、构建置信区间,并量化模型不确定性,但对计算资源要求较高。Bootstrap特别适合评估大模型的泛化能力和稳定性,在集成学习、假设检验等领域也有广泛应用。与传统方法相比,Bootstrap不依赖分布假设,在非正态数据中表现更稳健。
1303 113
|
6月前
|
数据挖掘 Unix Windows
R语言4.5.0安装教程:详细步骤+自定义安装路径(64位)
R是跨平台的开源统计分析软件,集计算、绘图与交互式帮助于一体。本文详述R 4.5.0(64位)在Windows系统的下载、解压、管理员安装及路径设置全流程,并指导启动验证,助用户快速完成环境配置。(239字)
|
7月前
|
算法 搜索推荐 数据挖掘
基于手肘法的kmeans聚类数的精确识别【K-means聚类】Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。 🔥 内容介绍 一、先搞懂核心:为什么需要 “精确识别聚类数”? K-means 聚类的核心是将数据划分为 K 个 “相似度高、差异度大” 的簇,但 K 值的选择一直是算法应用的痛点 —— 选小了会导致簇内差异过大,选大了会出现过度聚类(簇间边界模糊),甚至失去实际业务意义。比如分析用户画像时
374 2
|
机器学习/深度学习 人工智能 监控
阿里通义开源全模态大语言模型 R1-Omni:情感分析成绩新标杆!推理过程全程透明,准确率飙升200%
R1-Omni 是阿里通义开源的全模态大语言模型,专注于情感识别任务,结合视觉和音频信息,提供可解释的推理过程,显著提升情感识别的准确性和泛化能力。
1897 10
阿里通义开源全模态大语言模型 R1-Omni:情感分析成绩新标杆!推理过程全程透明,准确率飙升200%
|
机器学习/深度学习 数据可视化 C语言
多分类混淆矩阵详解
多分类混淆矩阵详解
2625 0
|
数据采集 机器学习/深度学习 数据可视化
探索大数据分析的无限可能:R语言的应用与实践
探索大数据分析的无限可能:R语言的应用与实践
905 9
|
机器学习/深度学习 算法 数据建模
决策树(Decision Tree)算法详解及python实现
决策树(Decision Tree)算法详解及python实现
3996 0
决策树(Decision Tree)算法详解及python实现
|
数据可视化 安全 大数据
NIFI是什么工具?优点是什么?
【10月更文挑战第21天】NIFI是什么工具?优点是什么?
1032 1