Du siehst, wie Distanz, Nachbarschaft und die Wahl von k zusammenhängen. Außerdem trainierst du den Unterschied zwischen Klassifikation und Regression mit derselben Methode.
AlltagWohnungssuche statt abstrakter Punktwolken
DidaktikErst Intuition, dann Demo, dann Python
TransferBrücke zu Tuning, Distanzmetriken und Scaling
0 Prozent abgeschlossenRang: Nachbarschafts-Neuling
Schritt 1 · Die Idee
Was macht KNN überhaupt?
KNN entscheidet nicht über eine feste Formel, sondern fragt: Welche bekannten Fälle liegen dem neuen Fall am nächsten?
Noch offen. Ordne die Alltagsszene ein und prüfe danach die zwei Aussagen.
Alltagsszene
Stell dir vor, du suchst eine neue Wohnung. Eine freie Wohnung ist 68 m² groß, hat einen Balkon und liegt acht Minuten von der Bahn entfernt. Du fragst dich: Gehört sie eher in die Gruppe 'eher teuer' oder 'eher bezahlbar'?
KNN schaut nicht zuerst auf eine Gleichung, sondern auf ähnliche Wohnungen, die du schon kennst. Es nimmt also Nachbarschaft als Abkürzung für Entscheidung.
ML-Sprache
Die Merkmale sind zum Beispiel Größe, Balkon und Entfernung. Die Zielvariable ist hier die Klasse 'teuer' oder 'bezahlbar'. KNN vergleicht den neuen Punkt mit vorhandenen Trainingspunkten.
gibt an, wie viele dieser Nachbarn mitzählen.
Mini-Interaktion
Welche Beschreibung passt am besten zu KNN?
Wähle eine Aussage. Du bekommst sofort Feedback und kannst falsche Antworten direkt korrigieren.
🏋️ Übung: Ein KNN-Modell mit sklearn vorbereiten
Dieser Startercode basiert auf dem KNN-sklearn-Notebook. Ergänze die Modellzeile so, dass ein Klassifikator mit fünf Nachbarn erstellt wird.
📓 Öffne dein Jupyter Notebook oder Google Colab und probiere es selbst aus.
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, random_state=1
)
knn = # ??? DEINE LÖSUNG ???
💡 Tipp anzeigen
Im Notebook heißt die Klasse genau wie das Verfahren. Nur die Zahl der Nachbarn musst du hier setzen.
✅ Lösung anzeigen
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, random_state=1
)
knn = KNeighborsClassifier(n_neighbors=5)
Erwartete Ausgabe: `KNeighborsClassifier()`
Was nimmst du mit?
KNN lebt von Ähnlichkeit. Das Modell braucht keine globale Formel, sondern gute Vergleichsfälle.
Schritt 2 · Distanz
Wer ist dem neuen Fall am nächsten?
Die Wahl der Nachbarn hängt von der Distanz ab. Im ersten KNN-Schritt musst du deshalb sehen, welche Punkte wirklich nah sind.
Noch offen. Verschiebe den Zielpunkt und finde die drei nächsten Nachbarn.
Interaktive Nachbarschaft
Bordeaux = eher teuerBlau = eher bezahlbarGrün = neuer Fall
Steuerung
Nächster NachbarB-03
Mittlere Nähe8.2
HinweisNah an der Grenze
Beobachte, wie sich die drei hervorgehobenen Nachbarn ändern, wenn du den grünen Punkt verschiebst.
Formel in Alltagssprache
d = √((x₁ - x₂)² + (y₁ - y₂)²)
Die Distanz sagt: Wie weit liegen zwei Wohnungen im Merkmalsraum auseinander? Je kleiner der Abstand, desto stärker zählt ein Fall als Nachbar. Wichtig: Merkmalsraum heißt hier nicht echter Stadtplan, sondern der Zahlenraum deiner Eingabemerkmale.
🏋️ Übung: Manhattan-Distanz aus dem Notebook
Die KNN-Notebooks arbeiten zuerst mit einfachen Distanzbeispielen. Ergänze die fehlende Zeile, damit die Manhattan-Distanz zwischen zwei Punkten berechnet wird.
📓 Öffne dein Jupyter Notebook oder Google Colab und probiere es selbst aus.
point_1 = (2, 3, 5)
point_2 = (1, -1, 3)
manhattan_distance = 0
for i in range(3):
manhattan_distance += # ??? DEINE LÖSUNG ???
print(manhattan_distance)
💡 Tipp anzeigen
Bei Manhattan zählst du pro Dimension die absolute Differenz und addierst alles auf.
✅ Lösung anzeigen
point_1 = (2, 3, 5)
point_2 = (1, -1, 3)
manhattan_distance = 0
for i in range(3):
manhattan_distance += abs(point_1[i] - point_2[i])
print(manhattan_distance)
Erwartete Ausgabe: `7`
Schritt 3 · Entscheidung
Was macht k mit der Vorhersage?
Mit kleinem k zählt die unmittelbare Umgebung stark. Mit größerem k wird die Entscheidung ruhiger, aber oft auch grober.
Noch offen. Vergleiche k = 1, 3 und 7 und beantworte danach die Quizfrage.
Mehrheitsentscheid
Bei der Klassifikation entscheidet meist der . Das ist einfach gesagt die Klasse, die unter den k Nachbarn am häufigsten vorkommt.
Bei KNN-Regression wird statt einer Klasse ein Mittelwert aus den Zielwerten der Nachbarn gebildet. Derselbe Mechanismus, aber andere Ausgabe: einmal Kategorie, einmal Zahl.
k live ändern
k3
Prognoseeher teuer
Mehrheit2 zu 1
Starte mit k = 3. Danach beobachte, wie die Entscheidung bei k = 1 nervöser und bei k = 7 grober wird.
Quiz
Wähle eine Antwort. Du kannst direkt erneut prüfen.
Schritt 4 · Regression
KNN kann auch Zahlen vorhersagen
Dieselbe Nachbarschaftsidee funktioniert nicht nur für Klassen, sondern auch für stetige Zielwerte wie Preis, Stromverbrauch oder Eisverkauf.
Noch offen. Wechsle zwischen Klassifikation und Regression und erkläre den Unterschied.
Alltagsszene
In einer Eisdiele willst du nicht nur wissen, ob morgen 'viel' oder 'wenig' los ist. Oft willst du eine Zahl: etwa 320 verkaufte Kugeln. Dann ist KNN-Regresssion praktisch.
Modus wechseln
EntscheidungsregelModus
Ausgabeeher teuer
BedeutungKlasse
Klassifikation gibt eine Klasse aus. Regression gibt einen Mittelwert aus.
Reflexionsfrage
Wähle eine Antwort und lies die Begründung.
Schritt 5 · Python
Der sklearn-Workflow aus dem Notebook
Jetzt verbindest du die Idee mit echtem Python-Code. Der Ablauf ist derselbe wie in den Notebooks: Daten laden, splitten, Modell fitten, vorhersagen, auswerten.
Noch offen. Lies das Codebeispiel und ergänze danach die Vorhersagezeile in der Übung.
Code-Beispiel
from sklearn.datasets import load_breast_cancer
from sklearn.metrics import accuracy_score, recall_score
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, random_state=1
)
knn = KNeighborsClassifier(n_neighbors=5, metric="euclidean")
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
print("Accuracy:", round(accuracy_score(y_test, y_pred), 2))
print("Recall:", round(recall_score(y_test, y_pred), 2))
Was passiert hier?
Das Beispiel stammt aus dem sklearn-KNN-Notebook und ist auf den Kern gekürzt. Neu ist hier vor allem die Modellzeile: Dort werden die Anzahl der Nachbarn und die Distanzmetrik festgelegt.
Danach läuft KNN wie andere sklearn-Modelle: fit(), predict(), dann eine Metrik wie Accuracy oder Recall. Bei KNN bedeutet fit() aber vor allem: Trainingsdaten speichern und für Nachbarschaftssuchen vorbereiten, nicht eine explizite Formel lernen.
🏋️ Übung: Vorhersage aus dem Notebook ergänzen
Die Trainingsphase ist schon erledigt. Ergänze jetzt die Zeile, die Vorhersagen für den Testsatz berechnet.
📓 Öffne dein Jupyter Notebook oder Google Colab und probiere es selbst aus.
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, random_state=1
)
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
y_pred = # ??? DEINE LÖSUNG ???
💡 Tipp anzeigen
In sklearn fragt die Vorhersage immer das trainierte Modell nach neuen Daten.
✅ Lösung anzeigen
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, random_state=1
)
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
Erwartete Ausgabe: ein Array mit Klassen 0 und 1
Kurz-Check
Wenn dir der sklearn-Ablauf klar ist, bestätige das hier. Damit wird das Modul abgeschlossen.
Bestätige den Ablauf, wenn fit, predict und Auswertung für dich zusammenpassen.
Schritt 6 · Grenzen & Übergang
Wann wird KNN schwierig?
KNN wirkt intuitiv, hat aber drei klassische Stolperstellen: falsches k, ungeeignete Distanzmetrik und unskalierte Merkmale.
Noch offen. Löse das Abschlussquiz vollständig, um das Kapitel sicher abzuschließen.
Drei typische Grenzen
Zu kleines k: Das Modell reagiert zu nervös auf einzelne Ausreißer.
Zu großes k: Das Modell mittelt zu stark und verliert lokale Struktur.
Unskalierte Merkmale: Eine große Skala dominiert dann die Distanz unfairly.
Zusatzregel für die Praxis: Bei zwei Klassen nimmt man oft ein ungerades k, damit Gleichstände seltener auftreten.
Brücke zum nächsten Kapitel
Als Nächstes geht es genau um diese Stellschrauben: Wie wählst du k systematisch? Wann hilft Distanzgewichtung? Und wie erkennst du Overfitting bei KNN?
Abschlussquiz
Was nimmst du mit?
KNN ist stark, wenn Ähnlichkeit eine gute Abkürzung ist. Damit es in der Praxis sauber funktioniert, musst du als Nächstes k, Distanz und Gewichtung bewusst abstimmen.