AI 互動教室 ‹ 學基礎機器學習
下載 .py 單獨開啟實驗場 ↗ 留言回報
CLASSIFICATION · 分類

分類:教機器做判斷

沒有人教過你「橘子的定義」。你只是看過夠多橘子和葡萄柚,之後拿到一顆新的, 自然知道它是誰。分類就是讓機器用同一招:從看過的例子學會判斷沒看過的東西。 先玩玩看——拖動那顆問號果實,離它最近的三顆會幫它投票:

?

右邊的實驗場是真的 Python(在你的瀏覽器裡跑,不用安裝任何東西)。 首次載入約需 30–60 秒,正好夠你讀完第 1 節。每一格程式碼都能改、能重跑, 改壞了重新整理就復原——這是你的沙盒,盡量玩。

01 · 觀察

認水果之前,先看資料

右邊的實驗場裡有 120 顆果實:橘子葡萄柚各 60 顆,每顆量了兩個數字——重量直徑。 這兩個數字叫特徵(我們拿來判斷的線索),「是橘子還是葡萄柚」叫標籤(正確答案)。

把 120 顆點在圖上,兩群涇渭分明——但注意中間那塊曖昧地帶: 有些橘子長得特別大、有些葡萄柚特別小。世界上真實的資料幾乎都長這樣, 而分類真正的難題,全部發生在那塊地帶。

02 · 方法

k-NN:讓鄰居投票

最直覺的分類法叫 k 最近鄰(k-Nearest Neighbors):一顆新果實進來, 找出跟它最像的 k 顆(圖上距離最近的鄰居),讓它們投票,多數決。 就這樣,沒有別的了——你剛剛在上面那個小玩具裡已經玩過 k = 3 的版本。

到右邊拉動 k,盯著兩群之間的分界線

  • k = 1:訓練準確率一定是 100%——每顆果實最近的鄰居就是它自己, 當然全對。但分界線歪七扭八,繞著每顆怪果實轉。這不是聰明,是背答案
  • k 變大:分界線越來越平滑,個別怪果實再也綁架不了判斷。
  • k 太大會怎樣?想想 k = 120(全部果實都投票)——不管來什麼果實, 答案永遠一樣。到第 4 節你會親手驗證這件事。
03 · 實測

拿一顆新果實考它

模型學完了,來驗收。到右邊自己捏一顆果實——調它的重量和直徑, 看模型怎麼判、幾票對幾票。然後做一件壞心的事: 把它慢慢推進兩群中間的曖昧地帶,找出投票翻盤的那一刻。 你會發現「模型的答案」在邊界附近其實只是險勝,這個體感比任何準確率數字都重要。

04 · 實戰

換你動手

右邊最下面有一格「你的實驗區」,是你的地盤。三個挑戰,由易到難:

LEVEL 1

my_k 改成 1,確認訓練準確率真的變 100%。

LEVEL 2

my_k 一路調大(21、41、61…),準確率怎麼變? k = 120 時模型等於在做什麼?

LEVEL 3

回到 1️⃣ 的資料格,把兩群中心改得更近(橘子 160g、葡萄柚 200g), 重疊變多之後,最好的 k 還是原來那個嗎?先猜,再驗證。

Python 環境載入中(首次約 30–60 秒)…讀完第 1 節它就好了