单元五

第17课 混淆矩阵与 classification_report

任务场景:不只看总分,还要看「哪一类」猜对/猜错
任务场景:不只看总分,还要看「哪一类」猜对/猜错
原理图:混淆矩阵——真实 vs 预测对照表
原理图:混淆矩阵——真实 vs 预测对照表

一、任务目标

读懂混淆矩阵格子,并浅读分类报告里的数字。

二、核心概念讲清楚

混淆矩阵行/列对应真实与预测类别。还可看 precision/recall。正确率是总览,矩阵是细节。

  • confusion_matrix
  • 对角线多为「猜对」
  • 分类报告汇总精确率/召回率
1得到 y_pred测试集预测
2算混淆矩阵对照类别
3读错分位置哪两类最易混
4改进方向加特征或换模型

三、跟着想一遍(小例子)

若猫常被预测成狗,矩阵对应格子数字会偏大。

易错:只看准确率 95%,忽略少数类全错。

正确:结合矩阵看每一类表现。

想一想:医疗筛查更怕「漏诊」还是「误诊」?和哪类指标相关?

四、解题思路

任务:读懂混淆矩阵格子,并浅读分类报告里的数字。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

本课主要用到:屏幕输出。

  1. 1明确任务「读懂混淆矩阵格子,并浅读分类报告里的数字。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用 print 把结果说出来,确认屏幕上出现预期内容。
  3. 3对照参考代码跑通后,只改一个参数,观察结果如何变化。

流程示意(可对照左侧文字)

任务:读懂混淆矩阵格…用print把结果说出来,…对照参考代码跑通后,只改一…

五、语句功能讲解

本课用到的 Mixly 图形块均已在前面的课讲过。请直接对照编程练习搭积木;若有遗忘,回到该积木首次出现的课页复习。

六、知识点讲解

分类评估不止准确率:还要看各类别的查准/查全,避免被多数类迷惑。

先弄清本课输入与输出,再进编程练习对照现象。

七、编程练习

先理解上面的例子,再在下方 Mixly 运行与检查(含 scikit-learn)。

先看矩阵形状,再扫一眼报告。

参考代码(对照抄写到下方 Mixly)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix, classification_report

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=0
)
clf = KNeighborsClassifier(n_neighbors=3).fit(X_train, y_train)
y_pred = clf.predict(X_test)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred))
print()
print(classification_report(y_test, y_pred, digits=3))

八、课堂练习

先完成两道正误判断,再做其余题目;选出后点「检查」。

  1. 判断:只抄参考代码,不看运行输出,也不改参数验证。

  2. 判断:先跑通,再对照「单元五」改一处输入/参数,确认输出按预期变化;答错小测时读讲解。

  3. 混淆矩阵主要帮助我们?

  4. classification_report 通常按什么分组报告?

九、本节小结

混淆矩阵是「对错对照表」;报告是「分门别类的成绩单」。