Ein Leitfaden für Anfänger zu K-Nearest Neighbors (2024)

Eine einfache Anleitung zum Einstieg in KNN in Python.

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (1)

Der K-Nearest-Neighbour-Algorithmus ist leicht zu verstehen und leicht zu implementieren und einer der am häufigsten verwendeten Klassifizierungsalgorithmen.

Die Mathematik hinter KNN ist ein nicht parametrischer Algorithmus. Sie ist einfach zu verstehen und daher leicht zu interpretieren und zu erklären. Aber das ist nicht alles.

KNN ist auch bekannt für:

  • Robust sein; Beispielsweise müssen Klassen nicht linear trennbar sein.
  • Es müssen nur wenige Parameter eingestellt werden, um das beste Modell zu finden
  • Keine Annahmen haben.

In diesem Artikel werde ich auf die Mathematik eingehen, aus der der KNN-Algorithmus besteht, sowie auf die Implementierung in Python. Also, ohne weitere Fälligkeit, fangen wir an.

Die Mathematik hinter KNN

"Ein Datenpunkt ist dem Unternehmen bekannt, das er verwaltet."

K nächste Nachbarn arbeiten am euklidischen Distanzkonzept . Das Konzept ist ziemlich einfach und unkompliziert.
Die nächsten Datenpunkte „kategorisieren“ den Testpunkt. zum Beispiel:

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (2)

Angenommen, ich habe zwei Klassen, Klasse A und Klasse B.

Ich möchte herausfinden, zu welcher Klasse mein Testpunkt (Der rote Stern im Bild) gehört.

Ich analysiere die drei Datenpunkte, die meinem Red Star-Testpunkt am nächsten liegen, und zähle, welche Klasse die Mehrheit dieser drei Datenpunkte sichert.

Die Klasse, die die Mehrheit sichert, gilt als Klasse für unseren Red Star-Testpunkt, der bei drei nächsten Nachbarn „Klasse B“ ist.
Bei sechs nächsten Nachbarn (K = 6) sehen wir, dass unser Roter Stern als „Klasse A“ eingestuft wurde.

Dies zeigt uns, dass die Anzahl der nächstgelegenen Datenpunkte oder „Nachbarn“ eine entscheidende Rolle bei der Bestimmung der Klasse spielt, zu der unser Testpunkt gehört.

Nachdem wir gesehen haben, wie Datenpunkte klassifiziert werden, werden wir uns die Mathematik dahinter ansehen.

Wir wissen, dass die „nächsten Nachbarn“ die Punkte sind, die uns bei der Klassifizierung unseres Datenpunkts helfen, aber wie betrachten wir einen Punkt als den „nächsten Punkt“? Wie messen wir den Abstand zwischen Testpunkt und Datenpunkten?

Wir wenden uns dem euklidischen Distanzkonzept zu.

Die euklidische Entfernung hilft uns, zu messen, wie weit unser Testpunkt von unseren Datenpunkten entfernt ist. Die mathematische Darstellung der euklidischen Entfernung lautet:

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (3)

Hier sind X und Y unsere Testpunkte und Datenpunkte, und "i" ist die Anzahl der Features oder "Spalten". Lösen wir ein Beispielproblem, damit wir die euklidische Entfernung besser verstehen können.

Ich habe einen Datensatz, der zeigt, ob ein bestimmter Schüler eine Note bestanden hat oder nicht, basierend auf dem Ergebnis von zwei Abschlussprüfungsergebnissen.

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (4)

Angenommen, ich würde gerne wissen, ob ein bestimmter Schüler, der 8 in seiner Mathematikprüfung und 4 in CS erreicht hat, bestanden oder nicht bestanden hat.

Wir werden das euklidische Distanzkonzept verwenden und unsere Vorhersage treffen.

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (5)

Nachdem wir unsere euklidischen Entfernungswerte gefunden haben, können wir uns bewegen, um unsere Klassifizierung vorzunehmen.

Ich werde zunächst nur einen „nächsten Nachbarn“ betrachten, der der Datenpunkt mit der kleinsten euklidischen Entfernung (K = 1) ist.

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (6)

Wenn wir nur einen Datenpunkt betrachten, können wir sehen, dass unser Testpunkt als fehlgeschlagen klassifiziert wird . (Hinweis: Der Punkt mit euklidischem Abstand = 0 ist unser Testpunkt, der nicht berücksichtigt wird.)

Schauen wir uns K = 3 oder drei nächstgelegene Datenpunkte an.

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (7)

Wenn wir uns die drei nächstgelegenen Punkte ansehen, können wir sehen, dass es mehr Schüler gibt, die bestanden als nicht bestanden haben. Daher wird unser Testpunkt in diesem Fall als bestanden eingestuft.

Der Wert von K wirkt sich auf unsere Klassifizierungsergebnisse aus. Deshalb ist es wichtig zu verstehen, wie eine Änderung des Werts von K unser Modell verändert. Lass uns einen Blick darauf werfen

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (8)

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (9)

Wie aus den obigen Abbildungen hervorgeht, ist unser Modell bei einem niedrigeren Wert von K sehr flexibel und versucht, jeden einzelnen Datenpunkt nach besten Kräften zu klassifizieren.

Auch wenn das eine gute Sache ist, aber wenn diese Modelltypen mit unsichtbaren Daten getestet werden, neigen sie dazu, eine schlechte Leistung zu erzielen, da das Modell die Trainingsdaten „überpasst“.

Es verallgemeinert sich zu gut auf die Trainingsdaten, kann jedoch keine unsichtbaren Daten verarbeiten.

Wenn andererseits der Wert von K hoch ist, weist das Modell tendenziell eine geringe Flexibilität auf und neigt dazu, das Modell zu „unteranpassen“, das Modell jedoch nicht zu „überanpassen“ und im Allgemeinen eine gute Leistung bei unsichtbaren Daten zu erzielen.

Dieses gesamte Konzept wird als Bias-Varianz-Kompromiss bezeichnet und ist ein wesentlicher Bestandteil des maschinellen Lernens.
Wir werden immer nach Parametern suchen, die uns ein Gleichgewicht zwischen beiden geben.

Implementierung in Python

Nachdem wir uns die Theorie hinter KNN angesehen haben, ist es Zeit, sie in Python zu implementieren.

In diesem Teil werde ich ein Problem der binären Klassifizierung mit mehreren unabhängigen Variablen behandeln.

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (10)

Der nächste Schritt wäre die Standardisierung unserer Variablen. Wir führen diesen Schritt durch, weil Variablen mit höheren Bereichen dazu neigen, unser Modell unnötig zu verzerren. Nehmen wir also an: Wenn wir eine Variable im Bereich von Millionen für einen Datensatz mit Variablen im Bereich von 1 bis 10 haben, fügt diese eine bestimmte Variable unserem Modell unnötige Verzerrungen hinzu und führt zu falschen Ergebnissen.

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaler.fit(df.drop('TARGET CLASS',axis=1))scaled_features = scaler.transform(df.drop('TARGET CLASS',axis=1))df_feat = pd.DataFrame(scaled_features,columns=df.columns[:-1])df_feat.head()

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (11)

Als nächstes werden wir das Zugtest-Split-Modul ausführen

from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(scaled_features,df['TARGET CLASS'], test_size=0.30,random_state=101)
from sklearn.neighbors import KNeighborsClassifierknn = KNeighborsClassifier(n_neighbors=1)knn.fit(X_train,y_train)pred = knn.predict(X_test)
from sklearn.metrics import classification_report,confusion_matrixprint(confusion_matrix(y_test,pred))print(classification_report(y_test,pred))

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (12)

Auswahl eines K-Wertes

Wir werden Werte von 1–40 betrachten

error_rate = []# Will take some timefor i in range(1,40): knn = KNeighborsClassifier(n_neighbors=i) knn.fit(X_train,y_train) pred_i = knn.predict(X_test) error_rate.append(np.mean(pred_i != y_test))plt.figure(figsize=(10,6))plt.plot(range(1,40),error_rate,color='blue', linestyle='dashed', marker='o', markerfacecolor='red', markersize=10)plt.title('Error Rate vs. K Value')plt.xlabel('K')plt.ylabel('Error Rate')

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (13)

Mit K = 1 war die Leistung unserer Modelle zunächst

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (14)

Mit K = 35

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (15)

Mit K = 35 schnitt unser Modell mit einer Steigerung unserer Genauigkeit um 3 Prozent gut ab.

Fazit

Dies war eine kurze Einführung in K nächste Nachbarn in Python. Ich hoffe es hat euch gefallen.
Fühlen Sie sich frei, diesen Artikel zu teilen, denn das hilft mir sehr. Vielen Dank

Verweise

[1]: Jose Portillo..Python für Data Science https://www.udemy.com/course/python-for-data-science-and-machine-learning-bootcamp/

Ein Leitfaden für Anfänger zu K-Nearest Neighbors (2024)

References

Top Articles
Latest Posts
Article information

Author: Dong Thiel

Last Updated:

Views: 5815

Rating: 4.9 / 5 (79 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Dong Thiel

Birthday: 2001-07-14

Address: 2865 Kasha Unions, West Corrinne, AK 05708-1071

Phone: +3512198379449

Job: Design Planner

Hobby: Graffiti, Foreign language learning, Gambling, Metalworking, Rowing, Sculling, Sewing

Introduction: My name is Dong Thiel, I am a brainy, happy, tasty, lively, splendid, talented, cooperative person who loves writing and wants to share my knowledge and understanding with you.