分类模型之混淆矩阵(Confusion Matrix)

混淆矩阵是衡量分类型模型准确度的基本方法,常用于分类器如分类树、逻辑回归等的评估。其包含TruePositive、FalseNegative、FalsePositive和TrueNegative四个指标,以及衍生出的准确率、精确率、灵敏度和特异度等重要参数。

混淆矩阵简介

混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法。

可以简单理解为:将一个分类模型的预测结果与正确结果做对比,将预测正确的统计量和预测错误的统计量分别写入一张矩阵图中,得到的这张图就是混淆矩阵了。

混淆矩阵的使用情况:因为混淆矩阵是用来评判模型结果的,属于模型评估的一部分。因此,混淆矩阵多用于判断分类器(Classifier)的优劣,适用于分类型的数据模型有:分类树(Classification Tree)、逻辑回归(Logistic Regression)、线性判别分析(Linear Discriminant Analysis)等。

混淆矩阵及其参数

以分类中最简单的二分类为例,我们的模型训练完之后会进行“0”和“1”的判断,专业词语是positive和negative的判断。

我们通过样本可以直接知道真实情况下,哪些数据结果是positive,哪些结果是negative。同时,我们也可以通过神经网络或者其它模型跑出结果,进而可以知道模型认为这些数据哪些是positive,哪些是negative。

这样就能得到这样四个基础指标:

1、真实值是positive,模型认为是positive的数量(True Positive=TP)
2、真实值是positive,模型认为是negative的数量(False Negative=FN):这就是统计学上的第二类错误(Type II Error)
3、真实值是negative,模型认为是positive的数量(False Positive=FP):这就是统计学上的第一类错误(Type I Error)
4、真实值是negative,模型认为是negative的数量(True Negative=TN)

将这四个指标一起呈现在表格中,就能得到如下这样一个矩阵,我们称它为混淆矩阵(Confusion Matrix):

在这里插入图片描述

混淆矩阵的指标意义:

根据四个指标的含义,很容易看出TP和TN的值越大越好;FP和FN的值是越小越好了。

混淆矩阵的其他指标

根据以上四个基本指标,混淆矩阵还延申出了另外四个指标:

准确率(Accuracy)、精确率(Precision)、灵敏度(Sensitivity)、
特异度(Specificity)

四个参数的计算方式和意义如下便所示:
在这里插入图片描述

参考:
https://blog.youkuaiyun.com/upupyon996deqing/article/details/124768166
https://blog.youkuaiyun.com/Orange_Spotty_Cat/article/details/80520839

混淆矩阵Confusion Matrix)是机器学习中评估分类模型性能的核心工具,尤其适用于二分类和多分类任务。它通过将模型的 “预测结果” 与数据的 “真实标签” 进行交叉统计,清晰地展示模型在不同类别上的预测准确性、错误类型及分布,为后续优化(如调整阈值、改进特征)提供直观依据[^1]。 从二分类角度来看,混淆矩阵有 4 个核心指标。在此基础上还能衍生出核心评估指标。而对于多分类混淆矩阵,则是二分类混淆矩阵的扩展与解读[^1]。 在实际应用中,可以基于 SVC 的方式来进行训练及预测,计算混淆矩阵。以下是一个示例代码,展示了如何使用 Python 和相关库来计算和展示混淆矩阵,同时计算召回率: ```python import matplotlib.pyplot as plt import numpy as np from sklearn.datasets import make_classification from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics._classification import recall_score X, y = make_classification(random_state=0) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) print("真实的 Y值:", y_test) # SVC 方式 clf = SVC(random_state=0) clf.fit(X_train, y_train) predictions = clf.predict(X_test) print("预测的 Y值:", predictions) cm = confusion_matrix(y_test, predictions) disp = ConfusionMatrixDisplay(confusion_matrix=cm) r = recall_score(y_test, predictions, average='macro') print("\n", "recall score:", r) disp.plot() plt.show() ``` 上述代码使用`sklearn`库生成分类数据,将数据划分为训练集和测试集,使用 SVC 模型进行训练和预测,计算混淆矩阵和召回率,并将混淆矩阵进行可视化展示[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream_Bri

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值