DAI-utvecklareLaboration· ca 45 min· sandlåda på servern
Labb: k-närmaste grannar från grunden
Implementera kNN med euklidiskt avstånd och majoritetsröst, mäta accuracy på sklearn digits och se hur k påverkar.
Teori
Ingen träning: för en ny punkt, hitta de k närmaste träningspunkterna och rösta. Avståndet avgör allt — därför spelar skalning roll.
Deluppgifter
- avstånd —
distances(x, X)— euklidiskt avstånd från x till varje rad i X (vektoriserat). - predict —
predict(Xtr, ytr, X, k)— majoritetsröst bland k närmaste (vid lika: minsta etikett).
Godkänt när: accuracy >= 0.95
Startkoden
körs i en isolerad sandlåda på servernimport numpy as np
def distances(x, X):
# TODO: sqrt(sum((X - x)^2, axis=1))
...
def predict(Xtr, ytr, X, k=3):
# TODO: för varje rad i X: k närmaste index (argsort), majoritetsröst via np.bincount
...
Du skriver koden, tester du inte ser avgör om den håller. Skapa ett gratis konto för att köra labben.
Prova diagnosenSkapa konto gratisFörväntade resultat
Accuracy ≥ 0,95 på digits med k = 3 (typiskt ≈ 0,98).
Vanliga fel
- Glömmer roten ur (fungerar ändå för rangordning, men testet kräver riktigt avstånd).
- Räknar med testpunkten själv när Xtr == X.
- Lika röster hanteras inkonsekvent.