数据分析必学技能:混淆矩阵原理详解,Python调用实战

简介: 数据分析必学技能:混淆矩阵原理详解,Python调用实战

前言


混淆矩阵用来评估分类的准确性。


0、混淆矩阵的定义


混淆矩阵(Confusion Matrix)是在机器学习中,用于对分类模型的性能进行评估的一种方法。混淆矩阵展示了模型在分类任务中的预测结果与实际标签之间的对应关系。

混淆矩阵通常是一个二维矩阵,其中每一行代表着实际标签的类别,每一列代表着预测结果的类别。在二分类问题中,混淆矩阵包括四个元素,它们分别是:


  • 真正例(True Positive, TP):表示模型将正样本正确地预测为正样本的数量。
  • 假负例(False Negative, FN):表示模型将正样本错误地预测为负样本的数量。
  • 假正例(False Positive, FP):表示模型将负样本错误地预测为正样本的数量。
  • 真负例(True Negative, TN):表示模型将负样本正确地预测为负样本的数量。

在多分类问题中,混淆矩阵的维度将会更高,它的每一个元素表示实际标签为某一类别,而预测结果为另一类别的数量。


通过观察混淆矩阵,我们可以计算出多种模型性能指标,如准确率(Accuracy)、精确率(Precision)、召回率(Recall)和 F1 值(F1-score)等,这些指标可以帮助我们更好地评估模型的分类效果。


一、原理详解


混淆矩阵:混淆矩阵是将真实值与预测值匹配以及不匹配的项一起放入到矩阵中,它可以清楚的反映出真实值和预测值相同的地方,也可以反映出与预测值不相同的地方,


1-1、多分类样例

1da66fdd301c46ceafe191826fd28b13.png

如图所示:图示为一个情感多分类例子的混淆矩阵,从图中我们可以看出,真实样例为生气,并且被预测为生气的例子一共有98例,同一列的其他行表示真实样例为生气,但是被预测为其他情感的例子数量。混淆矩阵的正对角线表示的是真实值与预测值相互匹配的样例数。


1-2、二分类样例


假设我们有一个二元分类器,可以将电子邮件归类为垃圾邮件(positive)或非垃圾邮件(negative)。我们可以将分类器的预测结果与实际类别进行比较,并使用混淆矩阵来衡量模型的性能。


417dd28e6e3946859e0dac232d0f40ae.png

  • 在上表中,真实标签为positive和negative的邮件分别为130和80封。分类器的预测结果包括100封垃圾邮件被正确分类为positive,20封非垃圾邮件错误地被分类为positive,30封垃圾邮件错误地被分类为negative,以及50封非垃圾邮件被正确分类为negative。
  • 基于混淆矩阵的这些信息,我们可以计算出不同的分类性能指标,例如准确率、精确率、召回率和F1分数等,这些指标有助于我们评估模型的性能和优化模型的参数。


1-3、不同的分类性能指标介绍


当我们使用混淆矩阵来评估分类器性能时,可以根据混淆矩阵中的真阳性(True Positive)、假阳性(False Positive)、真阴性(True Negative)和假阴性(False Negative)的数量计算出不同的分类性能指标。下面是一些常用的指标:


  • 准确率(Accuracy):准确率表示模型正确分类的样本数占总样本数的比例,即:


image.png


准确率对于不同类别之间的样本数量不平衡的数据集可能会有误导性。在这种情况下,可以使用其他指标来更好地评估分类器性能。
  • 精确率(Precision):精确率表示被分类器正确分类为正例的样本数占分类器预测为正例的样本总数的比例,即:

image.png


精确率的计算方式强调了分类器正确识别正例的能力。

召回率(Recall):召回率表示被分类器正确分类为正例的样本数占真实正例的样本总数的比例,即:


image.png

召回率的计算方式强调了分类器正确识别所有真实正例的能力。
  • F1分数(F1 Score):F1分数是精确率和召回率的调和平均数,它可以用以下公式计算:


image.png

F1分数综合考虑了精确率和召回率两个指标,适用于不平衡的数据集。如果一个分类器在F1分数上得分很高,那么它既能够保持低误判率,又能够识别出大部分真正的正例。


二、混淆矩阵的相关API介绍以及样例


2-1、混淆矩阵介绍


在Python中,可以使用scikit-learn库来计算混淆矩阵。该库提供了许多用于分类问题的函数和类,包括混淆矩阵相关的API。下面介绍一些常用的API及其用法。


confusion_matrix(y_true, y_pred, labels=None, sample_weight=None, normalize=None)

该函数可以计算给定真实标签和预测标签的混淆矩阵。参数说明如下


  • y_true: 真实标签数组
  • y_pred: 预测标签数组
  • labels: 所有标签的列表(可选参数,默认为None)
  • sample_weight: 样本权重的数组(可选参数,默认为None)
  • normalize: 是否将混淆矩阵中的值归一化(可选参数,默认为None)


2-2、混淆矩阵样例


该函数返回一个二维数组,表示混淆矩阵。例如,以下代码演示了如何使用confusion_matrix函数:


# 导入相关API
from sklearn.metrics import confusion_matrix
y_true = [2, 0, 2, 2, 0, 1]
y_pred = [0, 0, 2, 2, 0, 2]
# Parameters: 参数介绍
# y_true: 真实值
# y_pred:预测值
# labels: 标签列表,默认为空,按照标签列表来重新排列混淆矩阵。
confusion_matrix(y_true, y_pred, labels=None)
array([[2, 0, 0],
       [0, 0, 1],
       [1, 0, 2]])

参考文章:

sklearn官网——混淆矩阵.

sklearn中混淆矩阵(confusion_matrix函数)的理解与使用.


总结

嗯,今天开启贤者模式。

相关文章
|
23天前
|
运维 监控 算法
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
MSET-SPRT是一种结合多元状态估计技术(MSET)与序贯概率比检验(SPRT)的混合框架,专为高维度、强关联数据流的异常检测设计。MSET通过历史数据建模估计系统预期状态,SPRT基于统计推断判定偏差显著性,二者协同实现精准高效的异常识别。本文以Python为例,展示其在模拟数据中的应用,证明其在工业监控、设备健康管理及网络安全等领域的可靠性与有效性。
553 13
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
|
1月前
|
机器学习/深度学习 算法 Python
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
104 7
|
3月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
在现代数据分析中,高维时间序列数据的处理和预测极具挑战性。基于矩阵分解的长期事件(MFLEs)分析技术应运而生,通过降维和时间序列特性结合,有效应对大规模数据。MFLE利用矩阵分解提取潜在特征,降低计算复杂度,过滤噪声,并发现主要模式。相比传统方法如ARIMA和深度学习模型如LSTM,MFLE在多变量处理、计算效率和可解释性上更具优势。通过合理应用MFLE,可在物联网、金融等领域获得良好分析效果。
127 0
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
|
2月前
|
SQL JSON 数据可视化
基于 DIFY 的自动化数据分析实战
本文介绍如何使用DIFY搭建数据分析自动化流程,实现从输入需求到查询数据库、LLM分析再到可视化输出的全流程。基于经典的employees数据集和DIFY云端环境,通过LLM-SQL解析、SQL执行、LLM数据分析及ECharts可视化等模块,高效完成数据分析任务。此方案适用于人力资源分析、薪酬管理等数据密集型业务,显著提升效率并降低成本。
5686 10
|
2月前
|
存储 分布式计算 大数据
基于阿里云大数据平台的实时数据湖构建与数据分析实战
在大数据时代,数据湖作为集中存储和处理海量数据的架构,成为企业数据管理的核心。阿里云提供包括MaxCompute、DataWorks、E-MapReduce等在内的完整大数据平台,支持从数据采集、存储、处理到分析的全流程。本文通过电商平台案例,展示如何基于阿里云构建实时数据湖,实现数据价值挖掘。平台优势包括全托管服务、高扩展性、丰富的生态集成和强大的数据分析工具。
|
3月前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
102 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
4月前
|
算法 数据处理 Python
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Savitzky-Golay滤波器是一种基于局部多项式回归的数字滤波器,广泛应用于信号处理领域。它通过线性最小二乘法拟合低阶多项式到滑动窗口中的数据点,在降噪的同时保持信号的关键特征,如峰值和谷值。本文介绍了该滤波器的原理、实现及应用,展示了其在Python中的具体实现,并分析了不同参数对滤波效果的影响。适合需要保持信号特征的应用场景。
309 11
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
|
2月前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
本书介绍了如何将Python与Excel结合使用,以提升数据分析和处理效率。内容涵盖Python入门、pandas库的使用、通过Python包操作Excel文件以及使用xlwings对Excel进行编程。书中详细讲解了Anaconda、Visual Studio Code和Jupyter笔记本等开发工具,并探讨了NumPy、DataFrame和Series等数据结构的应用。此外,还介绍了多个Python包(如OpenPyXL、XlsxWriter等)用于在无需安装Excel的情况下读写Excel文件,帮助用户实现自动化任务和数据处理。
|
3月前
|
安全 数据挖掘 编译器
【01】优雅草央央逆向技术篇之逆向接口协议篇-如何用python逆向接口协议?python逆向接口协议的原理和步骤-优雅草央千澈
【01】优雅草央央逆向技术篇之逆向接口协议篇-如何用python逆向接口协议?python逆向接口协议的原理和步骤-优雅草央千澈
99 6
|
4月前
|
SQL 存储 数据挖掘
使用Python和PDFPlumber进行简历筛选:以SQL技能为例
本文介绍了一种使用Python和`pdfplumber`库自动筛选简历的方法,特别是针对包含“SQL”技能的简历。通过环境准备、代码解析等步骤,实现从指定文件夹中筛选出含有“SQL”关键词的简历,并将其移动到新的文件夹中,提高招聘效率。
112 8
使用Python和PDFPlumber进行简历筛选:以SQL技能为例

热门文章

最新文章