二分类和混淆矩阵

二值分类器(Binary Classifier)是机器学习领域中应用最为广泛的分类器之一。在二分类的应用场景下,我们可以根据真实类别和预测类别的不同组合,将样本划分为如下四类:

  • 真正类(True Positive,简称 TP):实际为正类,且被模型预测为正类的样本。
  • 假正类(False Positive,简称 FP):实际为负类,但被模型预测为正类的样本。
  • 真负类(True Negative,简称 TN):实际为负类,且被模型预测为负类的样本。
  • 假负类(False Negative,简称 FN):实际为正类,但被模型预测为负类的样本。

显然,这四类样本是没有交集的,并且 TP+FP+TN+FN=样本总数。其中第一类和第三类是预测正确的样本,第二类和第四类是预测错误的样本。我们把样本实际为负类,但被模型预测为正类的错误称为误报(也称第 Ⅰ 类错误);把样本实际为正类,但被模型预测为负类的错误称为漏报(也称第 Ⅱ 类错误)。

TP、FP、TN 和 FN 这四类样本,一起构成了一个混淆矩阵(confusion matrix),如图 1 所示。

二分类结果的混淆矩阵

二分类结果的混淆矩阵

图 1:二分类结果的混淆矩阵

 

本质上,混淆矩阵会把实际样本分类值(true class)和模型预测分类值(predicted class)进行联列表分析。在二分类问题中,通常我们会把样本分为正类(或正例,常用“1”表示)和负类(负例,常用“-1”表示)。

对于分类而言,评估分类器最简单、最直接的标准就是分类准确率(Accuracy),即分类正确的样本数占总样本数的比例:

Accuracy=ncorrect/ntotal

针对二分类,这个准确率可具体表示为:

Accuracy=(TP+TN)/ntotal

但单纯用准确率来刻画分类算法的性能,不够严谨。有时我们还需要借助诸如查全率、查准率和 F1 分数更为细致地来评估性能。

### 计算展示二分类模型的混淆矩阵 在Python中处理二分类问题时,`sklearn.metrics.confusion_matrix` 函数提供了便捷的方法来计算混淆矩阵。此函数接收真实标签预测标签作为输入参数,并返回一个二维数组形式的混淆矩阵[^1]。 为了更好地理解可视化这些结果,可以利用 `matplotlib.pyplot` `seaborn` 库中的热图功能来图形化显示混淆矩阵的内容。这不仅有助于直观理解数据分布情况,还便于向非技术人员解释模型性能[^2]。 下面是一个完整的例子,展示了如何加载数据集、训练逻辑回归模型以及创建并绘制混淆矩阵: ```python from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay import matplotlib.pyplot as plt # 创建模拟数据集 X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=42) # 划分训练集与测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 初始化并拟合逻辑回归模型 model = LogisticRegression() model.fit(X_train, y_train) # 预测类别 y_pred = model.predict(X_test) # 构建混淆矩阵 cm = confusion_matrix(y_test, y_pred) # 绘制混淆矩阵 disp = ConfusionMatrixDisplay(confusion_matrix=cm) disp.plot(cmap="Blues") plt.show() ``` 通过上述代码片段可以看出,除了简单的数值表示外,还可以进一步分析由混淆矩阵衍生出来的其他重要评价指标,比如准确率 (Accuracy)、精确度 (Precision)、召回率 (Recall/Sensitivity),F1分数等,这些都是衡量分类器表现的关键因素[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值