news 2026/5/3 20:47:35

机器学习中的混淆矩阵

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习中的混淆矩阵

摘要:混淆矩阵是评估分类模型性能的重要工具,通过对比实际类别和预测类别来展示分类结果。它包含四个关键指标:真阳性(TP)、真阴性(TN)、假阳性(FP)和假阴性(FN)。以垃圾邮件分类为例,TP表示正确识别的垃圾邮件,TN表示正确识别的非垃圾邮件,FP表示非垃圾邮件被误判为垃圾邮件,FN表示垃圾邮件被误判为非垃圾邮件。通过混淆矩阵可以计算准确率、精确率、召回率等性能指标。在Python中可以使用scikit-learn的confusion_matrix()函数实现,并配合Seaborn库进行可视化展示。混淆矩阵为分类模型的评估和改进提供了直观有效的方法。

目录

什么是混淆矩阵?

混淆矩阵实用示例

基于混淆矩阵的分类指标

准确性

精度

召回还是敏感

特异性

F1 积分

第一类错误率

II型错误率

如何在 Python 中实现混淆矩阵?


什么是混淆矩阵?

机器学习中的混淆矩阵是衡量分类问题性能的最简单方法,当输出可以是两种或更多类型的类时。它不过是一个有两个维度的表格,即“实际”和“预测”,而且这两个维度都有“真阳性(TP)”、“真阴性(TN)”、“假阳性(FP)”、“假阴性(FN)”,如下所示 −

举个例子,将电子邮件分类为“垃圾邮件”和“非垃圾邮件”,以便更好地理解。这里垃圾邮件标注为“正面”,而合法(非垃圾邮件)则标注为负面邮件。

与混淆矩阵相关的术语解释如下 −

  • 真阳性(TP)− 当实际类别和预测类别数据点皆为1时,情况即为真阳性。分类模型正确预测数据样本的正向类别标签。例如,“垃圾邮件”被归类为“垃圾邮件”。

  • 真负(TN)− 当实际类别和预测类别数据点均为0时,情况即为真负。该模型正确预测了数据样本的负面类别标签。例如,“非垃圾邮件”邮件被归类为“非垃圾邮件”。

  • 假阳性(FP)− 当实际数据点类别为0,预测类别为1时,即为假阳性。该模型错误地预测了数据样本的正向类别标签。例如,一封“非垃圾邮件”被错误归类为“垃圾邮件”。这被称为第一类错误

  • 假阴性(FN)− 当实际数据类别为1,预测类别为0时,即为假阴性。模型错误地预测了数据样本的负面类别标签。例如,一封“垃圾邮件”被错误归类为“非垃圾邮件”。它也被称为II型错误

我们使用混淆矩阵来寻找正确和错误的分类 −

  • 正确的分类——TP和TN是正确分类的数据点。
  • 错误分类− FP 和 FN 是错误分类的数据点。

我们可以利用混淆矩阵计算不同的分类指标,如准确性、精确度、召回率等。但在讨论这些指标之前,让我们先了解如何借助一个实用的示例来创建混淆矩阵。

混淆矩阵实用示例

让我们举一个实用的例子,区分电子邮件“垃圾邮件”和“非垃圾邮件”。这里我们把垃圾邮件的班级表示为正面(1),非垃圾邮件为负面(0)。所以电子邮件被分类为以下两种类型——

  • 垃圾桶 (1) − 正类勒贝尔
  • 非垃圾邮件(0) − 负类勒贝尔

实际和预测的类别/类别如下 −

实际分类0101100111
预测分类0101010011

根据上述结果,我们来确定某个特定分类属于TP、TN、FP或FN。请看下面的表格——

实际分类0101100111
预测分类0101010011
结果TNTPTNTPFNFPTNFNTPTP

在上表中,当我们比较实际分类集与预测分类时,观察到有四种不同的结局类型。首先,真阳性(1,1),即实际分类为阳性,预测分类也是正值。这意味着分类器正确识别了阳性样本。第二,假阴性(1,0),即实际分类为阳性,预测分类为阴性。分类器将阳性样本识别为阴性。

第三种是假阳性(0,1),即实际分类为阴性,预测分类为正值。阴性样本被错误地识别为正值。第四,真负(0,0),即实际和预测的分类均为负。模型正确识别阴性样本为阴性样本。

我们来计算每个类别的样本总数。

  • TP(真阳性):4
  • 假阴性(FN):2
  • 假阳性(FP):1
  • TN(真阴性):3

现在我们创建混淆矩阵,如下 −

实际级别
正(1)负面(0)
预测班级
正(1)4(TP)1(FP)
负面(0)2(FN)3(田纳西州)

到目前为止,我们已经为上述问题创建了混淆矩阵。我们从上述矩阵推断一些含义 −

  • 在10封邮件中,有4封“垃圾邮件”被正确归类为“垃圾邮件”(TP)。
  • 在10封邮件中,有两封“垃圾邮件”被错误地归类为“非垃圾邮件”(FN)。
  • 在10封邮件中,有一封“非垃圾邮件”被错误归类为“垃圾邮件”(FP)。
  • 在10封邮件中,有三封“非垃圾邮件”被正确归类为“非垃圾邮件”(TN)。
  • 所以在10封邮件中,有7封邮件被正确分类(TP和TN),另外3封邮件被错误分类(FP和FN)。

基于混淆矩阵的分类指标

我们可以利用混淆矩阵定义许多分类卡特伦性能指标。我们将考虑上述实际例子,并利用该示例中的数值计算指标。其中一些如下 −

  • 准确性
  • 精度
  • 召回还是敏感
  • 特异性
  • F1 积分
  • 第一类错误率
  • II型错误率

准确性

准确性是评估分类模型的最常用指标。它是总修正预测与所有预测的比率。数学上,我们可以使用以下公式计算准确率−

我们计算准确率 −

因此,该模型的分类准确率为70%。

精度

准确度衡量真阳性病例在所有预测阳性病例中的比例。它是通过真阳性实例数与真阳性和假阳性实例之和的比率计算的。

我们计算精度 −

召回还是敏感

回忆(灵敏度)定义为分类器对阳性分类的数量。我们可以用以下公式计算它

我们计算召回率 −

特异性

特异性与回忆不同,定义为分类器返回的阴性数量。我们可以用以下公式 − 来计算它

我们计算特异性−

F1 积分

F1评分是一种平衡的衡量标准,兼顾了准确度和回忆能力。它是精确性和记忆的谐波平均。

我们可以利用以下公式计算F1分数 −

我们计算F1分数−

因此,F1 分数为 0.727。

第一类错误率

第一类错误发生在分类器预测为正向分类但实际上是负分类时。I型错误率计算为−

II型错误率

II型错误发生在分类器预测为负但实际上是正类时。II型错误率可计算为−

如何在 Python 中实现混淆矩阵?

要在 Python 中实现混淆矩阵,可以使用 scikit-learn 库sklearn.metrics模块中的confusion_matrix() 函数

注:请注意,confusion_matrix()函数返回一个二维数组,对应于以下混淆矩阵−

预测班级
负面(0)正(1)

实际级别

负面(0)真阴性(田纳西州)假阳性(FP)
正(1)假阴性(FN)真阳性(TP)

这里有一个简单的示例,说明如何使用confusion_matrix()函数 −

from sklearn.metrics import confusion_matrix # Actual values y_actual = [0, 1, 0, 1, 1, 0, 0, 1, 1, 1] # Predicted values y_pred = [0, 1, 0, 1, 0, 1, 0, 0, 1, 1] # Confusion matrix cm = confusion_matrix(y_actual, y_pred) print(cm)

在这个例子中,我们有两个数组:y_actual包含目标变量的实际值,y_pred代表目标变量的预测值。然后调用confusion_matrix()函数,将y_actualy_pred作为参数传递。该函数返回一个二维数组,代表混淆矩阵。

上述代码的输出将如下 −

[[3 1] [2 4]]

将上述结果与我们之前创建的混淆矩阵进行比较。

  • 真阴性(TN):3
  • 假阳性(FP):1
  • 假阴性(FN):2
  • 真阳性(TP):4

我们也可以用热力图可视化混淆矩阵。下面是我们如何使用Seaborn库中的热图()函数实现这一点

import seaborn as sns # Plot confusion matrix as heatmap sns.heatmap(cm, annot=True, cmap='summer')

这将生成一个热图,显示混淆矩阵−

在该热图中,横轴表示预测值,纵轴表示实际值。热力图中每个方块的颜色表示各类别的样本数量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 20:38:06

DownGit终极指南:三步精准下载GitHub任意文件夹

DownGit终极指南:三步精准下载GitHub任意文件夹 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 还在为GitHub单个文件夹下载而烦恼吗?DownGit作为专业的GitHub资源下载工具&#xff0c…

作者头像 李华
网站建设 2026/5/2 6:34:24

3步掌握专业文本分析:零基础用户的完全指南

3步掌握专业文本分析:零基础用户的完全指南 【免费下载链接】khcoder KH Coder: for Quantitative Content Analysis or Text Mining 项目地址: https://gitcode.com/gh_mirrors/kh/khcoder 文本分析工具KH Coder让任何人都能轻松挖掘文本数据的深层价值。无…

作者头像 李华
网站建设 2026/4/24 15:01:37

时间序列季节性调整难题,如何用R语言高效解决?

第一章:时间序列季节性调整难题,如何用R语言高效解决?在处理经济、金融或销售类数据时,时间序列中的季节性波动常常掩盖真实趋势,影响预测准确性。R语言提供了强大的工具来识别并消除这些季节性成分,其中se…

作者头像 李华
网站建设 2026/4/28 2:57:07

歌词滚动姬:零基础也能快速上手的专业歌词制作工具

歌词滚动姬:零基础也能快速上手的专业歌词制作工具 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 想要为心爱的歌曲制作完美同步的歌词吗?歌…

作者头像 李华
网站建设 2026/5/1 9:39:45

轻量化版本开发建议:适应手机等移动设备

轻量化版本开发建议:适应手机等移动设备 在短视频创作、虚拟主播和有声读物日益普及的今天,用户不再满足于“能说话”的语音合成工具,而是追求更自然、更个性、更可控的声音表达。尤其是在移动端,创作者希望能在拍摄现场即时生成匹…

作者头像 李华
网站建设 2026/4/27 11:18:03

从动作DNA到风险推演:镜像视界打造行业最专业的身体指纹体系

从动作DNA到风险推演:镜像视界打造行业最专业的身体指纹体系前言|高安全场景下“人”的核心难题在矿山、军工、危化园区等高安全场景中:人是最关键的风险变量行为与空间关系复杂传统识别手段(人脸、指纹、步态)存在局限…

作者头像 李华