单元三

第13课 点归到更近中心——最近邻一步归堆

任务场景:把彩色点归到更近的中心
任务场景:把彩色点归到更近的中心

一、任务目标

理解最近邻归堆是把样本分到距离更近的中心;能比较到两个中心的距离,并把点归入较近的一堆。

二、我们要学什么

  • 学习要点:点归到更近中心|最近邻一步归堆
  • 本课过关:能完成:说出「更近」由距离决定;载入体验程序,指出样本被归到较近中心;移动中心或样本后重新运行,归属可能改变。
  • 示例对齐:体验题对应本课「编程体验」;完整代码对应编程题1;补全与独立编写对应编程题2–3。均在 Mixly 图形化积木中完成。

三、本节要点

本课要认识按距离归堆。重难点是先算到各中心的距离,再选最小者;不要凭感觉分堆。要点对齐「点归到更近中心|最近邻一步归堆」。

1读场景明确真实任务
2对要点点归到更近中心|最近邻一步归堆
3载入运行图形化积木

四、解题思路

任务:把一个点归到更近的中心。请分清输入(点与中心的坐标)与输出(归属哪一堆)。

本课主要用到:Mixly 图形化积木与屏幕输出。

  1. 1明确任务「归到更近中心」:输出应是堆号或中心名。
  2. 2分别计算到各中心的曼哈顿距离,取较小者。
  3. 3移动一个点后重算,观察归属是否变化。

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

任务:归到更近中心分别计算到各中心的曼哈顿距离移动一个点后重算

五、图形块功能讲解

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

六、知识点讲解

最近邻归堆把样本分到距离更近的中心:先算到各中心的距离,再选最小的一个。本课用点归到更近中心作例子,这是无监督分堆的一步。中心或样本一动,归属就可能改变。

先弄清:更近由距离决定;再进编程练习对照归属。

七、编程练习

用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码自动判题。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。

参考代码(对照抄写到下方 Mixly)
def dist(a, b):
    return abs(a[0] - b[0]) + abs(a[1] - b[1])

def nearer(point, c1, c2):
    d1 = dist(point, c1)
    d2 = dist(point, c2)
    if d1 <= d2:
        return 1
    else:
        return 2

print(nearer([1, 1], [0, 0], [10, 10]))
print(nearer([9, 9], [0, 0], [10, 10]))

八、课堂练习

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

  1. 判断:点归到更近中心时,要比较到每个中心的距离,取较小的一个。

  2. 判断:会做最近邻一步归堆,就等于已经训练好了深度网络。

  3. 把其中一个中心挪远以后,某些点的归属会?

  4. 需要明确对错标签时,应优先?

  5. 本课归堆的依据是?

九、本节小结

本课主题是最近邻归堆:比较到各中心的距离,把点归入较近的一堆。