快速答案
本答案頁包含 Python 最近鄰分類器 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。
答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。
最近鄰分類器如何預測?
答案: 讓最近的訓練樣本投票
為什麼: k-NN 查看最近的帶標籤點,並組合它們的標籤。
為什麼計算距離前要縮放特徵?
答案: 大單位會主導距離
為什麼: 以千為單位的特徵會壓倒個位數特徵。
鄰居標籤平票時應該怎麼辦?
答案: 使用有文件的確定規則
為什麼: 例如選擇距離最近的平票鄰居,能讓預測可復現。
執行結果是什麼?
def distance(a, b):
return sum((x - y) ** 2 for x, y in zip(a, b)) ** 0.5
points = [((1, 1), "a"), ((4, 4), "b"), ((1, 2), "a")]
target = (1, 1.5)
ranked = sorted(points, key=lambda item: distance(target, item[0]))
print([label for _, label in ranked])答案: ['a', 'a', 'b']
為什麼: 離目標最近的兩個點標籤為 a,較遠的點為 b。
補全歐氏距離的指數。
def distance(a, b):
return sum((x - y) ** 2 for x, y in zip(a, b)) ** ____
print(distance((1, 1), (4, 5)))答案: 0.5
為什麼: 把平方和取 0.5 次方就是開平方。
補全排序時使用的距離函式。
def distance(a, b):
return sum((x - y) ** 2 for x, y in zip(a, b)) ** 0.5
points = [((1, 1), "a"), ((4, 4), "b")]
target = (1, 1.5)
ranked = sorted(points, key=lambda item: ____(target, item[0]))
print(ranked[0][1])答案: distance
為什麼: key 函式用目標點與每個訓練點比較。
補全回傳最常見標籤的 Counter 方法。
from collections import Counter
labels = ["a", "a", "b"]
winner = Counter(labels).____(1)[0][0]
print(winner)答案: most_common
為什麼: most_common(1) 回傳最常見標籤及其計陣列成的列表。
補全距離迴圈中的配對函式。
a = (1, 2)
b = (4, 6)
print(sum((x - y) ** 2 for x, y in ____(a, b)))答案: zip
為什麼: zip 生成兩個點中對應位置的坐標。
這段程式列印出什麼?
def distance(a, b):
return sum((x - y) ** 2 for x, y in zip(a, b)) ** 0.5
print(distance((1, 1), (4, 5)))答案: 5.0
為什麼: 坐標差為 3 和 4,所以距離是 5.0。
程式碼的輸出結果是什麼?
def distance(a, b):
return sum((x - y) ** 2 for x, y in zip(a, b)) ** 0.5
points = [((2, 2), "a"), ((5, 5), "b")]
target = (4.5, 4.5)
ranked = sorted(points, key=lambda item: distance(target, item[0]))
print(ranked[0][1])答案: b
為什麼: 點 (5, 5) 離目標更近,所以列印它的標籤 b。
螢幕上會顯示什麼?
from collections import Counter
labels = ["a", "a", "b"]
print(Counter(labels).most_common(1)[0][0])答案: a
為什麼: 標籤 a 出現兩次,因此贏得多數投票。
這段程式碼會輸出什麼?
def distance(a, b):
return sum((x - y) ** 2 for x, y in zip(a, b)) ** 0.5
print(round(distance((30, 30000), (31, 30000)), 1), round(distance((30, 30000), (30, 31000)), 1))答案: 1.0 1000.0
為什麼: 原始單位下的距離是 1.0 和 1000.0,說明為什麼需要縮放。
先試一遍題目
打開 Python 最近鄰分類器 練習頁,用即時回饋回答同樣的 12 道題。