Vælg centroids
Algoritmen placerer K foreløbige midtpunkter i datasættet.
Ikke-superviseret læring i 2D
Laboratorium · Udforsk · Justér · Forklar
K-Means er en algoritme, der leder efter naturlige grupper i data. Den får ikke at vide, hvilke punkter der hører sammen. I stedet gætter den på nogle midtpunkter, tildeler hvert punkt til det nærmeste centrum og flytter centrene igen og igen, indtil systemet falder til ro.
Algoritmen placerer K foreløbige midtpunkter i datasættet.
Hvert datapunkt får farven fra det centroid, det ligger nærmest.
Centroidet flyttes til gennemsnittet af sin klynge. Så begynder en ny runde.
De blå ringe er algoritmens foreløbige gæt på klyngernes midtpunkter. Den ved endnu ikke, hvilke datapunkter der hører sammen.
Redigér skabelonen, download den, og sammenlign Python-koden med det, du ser i 2D-laboratoriet.
Kør koden lokalt med python k_means_2d.py. Installér først pip install numpy matplotlib scikit-learn. Prøv at ændre ANTAL_KLYNGER, før du kører igen.
for gentagelse in range(100):
# 1. Hvert punkt får nærmeste centroid.
etiketter = tildel_til_nærmeste(X, centroider)
# 2. Hver centroid flyttes til sin klynges gennemsnit.
nye_centroider = beregn_gennemsnit(X, etiketter)
# 3. Stop, når centroiderne næsten ikke flytter sig.
if næsten_ens(nye_centroider, centroider):
break
centroider = nye_centroider
Biblioteket scikit-learn udfører netop disse trin for dig. Den interaktive graf gør de skjulte trin synlige.
Skift init="random" til init="k-means++". Hvad betyder det for startpunkterne?
Lav en for k in range(2, 11)-løkke, gem model.inertia_, og tegn din egen albuekurve.
Prøv en højere cluster_std. Hvornår bliver det svært at forsvare et bestemt K?
Skriv dine observationer ned – ikke kun dit resultat.
Prøv at ændre K fra 3 til 10. Hvad sker der med klyngerne? Ser du, at én naturlig gruppe bliver splittet i flere mindre grupper – en slags overfitting?
Vis albuekurven for K fra 2 til 10. Hvor ser du et tydeligt knæk? Kan du argumentere for et godt K uden at kende facit?
Tryk “Placér startpunkter”, og klik K steder på grafen. Placér dem først tæt sammen og derefter spredt. Påvirker starten slutresultatet?