单元四
第13课 KMeans 聚类(无标签)

一、任务目标
在没有标签 y 的情况下,把样本分成几簇。
二、核心概念讲清楚
KMeans 指定 k 个中心,反复把点分到最近中心并更新中心。注意:聚类标签编号本身没有「对错含义」。
KMeans(n_clusters=k)- 无监督:通常没有 y
- k 需要你指定或尝试
1准备特征 X可先标准化
2设定 k想分几堆
3fit_predict得到簇编号
4观察结果可视化或统计每簇人数
三、跟着想一遍(小例子)
把学生按两门成绩分成 3 组,得到 0/1/2 编号——编号只是组名,不是分数高低。
易错:把簇编号当成「成绩等级」直接解读。
正确:先看每簇特征均值,再解释含义。
想一想:超市把顾客分群做推荐,和 KMeans 目标像吗?
四、解题思路
任务:在没有标签 y 的情况下,把样本分成几簇。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。
本课主要用到:屏幕输出。
- 1明确任务「在没有标签 y 的情况下,把样本分成几簇。」:运行后你希望看到什么结果(文字、图形或计算结果)。
- 2用 print 把结果说出来,确认屏幕上出现预期内容。
- 3对照参考代码跑通后,只改一个参数,观察结果如何变化。
流程示意(可对照左侧文字)
五、语句功能讲解
本课用到的 Mixly 图形块均已在前面的课讲过。请直接对照编程练习搭积木;若有遗忘,回到该积木首次出现的课页复习。
六、知识点讲解
特征是从原始数据里抽出、对判断有用的量;标签是我们想预测的答案。分类就是根据特征给样本贴标签。特征选不好,后面模型再复杂也难做好。
先弄清本课输入与输出,再进编程练习对照现象。
七、编程练习
先理解上面的例子,再在下方 Mixly 运行与检查(含 scikit-learn)。
应大致分成两堆。
参考代码(对照抄写到下方 Mixly)
from sklearn.cluster import KMeans
X = [[1, 1], [1, 2], [2, 1], [8, 8], [8, 9], [9, 8]]
km = KMeans(n_clusters=2, n_init=10, random_state=0)
labels = km.fit_predict(X)
print("簇标签:", list(labels))
print("簇中心:", km.cluster_centers_.round(2).tolist())
正在载入编程环境
正在载入 Mixly 文本编程环境…
八、课堂练习
先完成两道正误判断,再做其余题目;选出后点「检查」。
判断:只抄参考代码,不看运行输出,也不改参数验证。
判断:先跑通,再对照「单元四」改一处输入/参数,确认输出按预期变化;答错小测时读讲解。
KMeans 典型特点是?
簇编号与真实类别编号?
九、本节小结
聚类按相似性分组,不靠 y。