单元二

第5课 KNeighborsClassifier 与鸢尾花

任务场景:看邻居多数属于哪一类,就猜哪一类
任务场景:看邻居多数属于哪一类,就猜哪一类
原理图:K 近邻投票分类
原理图:K 近邻投票分类

一、任务目标

用近邻算法给鸢尾花「投票」分类。

二、核心概念讲清楚

K 近邻(KNN):看新点周围 k 个最近样本,多数类别就是预测。k=1 就是「最近的一个说了算」。

  • KNeighborsClassifier(n_neighbors=k)
  • 距离近的样本更有话语权(投票)
  • 特征量纲差太大时,后面要学标准化
1加载/准备数据如 load_iris
2划分训练测试留出考卷
3创建 KNN 并 fit在训练集学习
4predict 测试集看猜对多少

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

k=1 时,新点会完全跟随最近邻居的标签;k=3 时看三个邻居投票。

易错:k 选得过大,边界被抹平;或测试集参与了训练。

正确:先从小 k 试起,并用测试集评估。

想一想:班里按「座位最近的人」投票选组长,和 KNN 哪里像?

四、解题思路

任务:用近邻算法给鸢尾花「投票」分类。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

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

  1. 1明确任务「用近邻算法给鸢尾花「投票」分类。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用 print 把结果说出来,确认屏幕上出现预期内容。
  3. 3对照参考代码跑通后,只改一个参数,观察结果如何变化。

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

明确任务「用近邻算法给鸢……用print把结果说出来,…对照参考代码跑通后,只改一…

五、语句功能讲解

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

六、知识点讲解

特征是从原始数据里抽出、对判断有用的量;标签是我们想预测的答案。分类就是根据特征给样本贴标签。特征选不好,后面模型再复杂也难做好。

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

七、编程练习

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

对比前5个预测与真实标签。

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

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.25, random_state=0
)
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)
pred = clf.predict(X_test[:5])
print("前5个预测:", list(pred))
print("前5个真实:", list(y_test[:5]))

八、课堂练习

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

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

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

  3. KNeighborsClassifier 做的是?

  4. n_neighbors=5 表示?

九、本节小结

KNN 用「近朱者赤」投票。