Wenn Sie Zugdaten in einer Ebene zeichnen und bestimmte Testdaten nicht testen, kennzeichnen Sie die Testdaten in der Ebene mit den häufigsten Werten von K Punkten nahe diesem Punkt t. .. Das ist die K-Nachbarschaftsmethode. (Obwohl ich andere als Flugzeuge verwende, werde ich hier leicht verständliche Flugzeuge verwenden, um das Konzept zu erklären.) Es ist ein bisschen schwierig, also leihe ich mir ein Diagramm von Wikipedia aus.
Extracted from Wikipedia
Beschriften Sie die grünen Punkte anhand der K nächsten Punkte. Was ich hier beachten möchte, ist die Variable K, die K Punkte ist. Zum Beispiel in der obigen Abbildung Wenn K = 3, werden 2 rote Punkte, 1 blauer Punkt und grüne Punkte als rot markiert. Wenn K = 5, werden 2 rote und 3 blaue Punkte als blau und der grüne Punkt als blau markiert.
――In dem obigen Fall funktioniert die K-Nachbarschaftsmethode gut, wenn die roten und blauen Punkte zu einem gewissen Grad getrennt sind. Im Gegenteil, die roten und blauen Punkte sind nicht besonders getrennt, und wenn die Daten eine Mischung aus roten und blauen Punkten sind, ist es keine gute Idee, die K-Nachbarschaftsmethode zu verwenden.
――Und wenn Sie beispielsweise die Anzahl von K erhöhen, wenn die Anzahl der roten Punkte im Vergleich zur Anzahl der blauen Punkte ungewöhnlich groß ist, ist auch die Wahrscheinlichkeit, als rot eingestuft zu werden, ungewöhnlich groß. Daher müssen Sie auf das Verhältnis von roten und blauen Punkten achten.
python
from sklearn.neighbors import KNeighborsClassifier
KNeighborsClassifier(n_neighbors=5, weights='uniform', algorithm='auto',
leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=1, **kwargs)
Der vielleicht wichtigste Parameter ist n_neighbors, wie oben beschrieben, und der folgende Code gibt Ihnen die optimale Anzahl von K Punkten, die berücksichtigt werden müssen.
python
#Erstellen Sie eine Liste mit Zahlen, die in K K eingegeben werden sollen
myList = list(range(1,50))
#Subtrahieren Sie sogar von dieser Liste, um eine Liste nur der Gewinnchancen zu erstellen
neighbors = filter(lambda x: x % 2 != 0, myList)
#Erstellen Sie eine leere Liste, um die Kreuzvalidierungsbewertung zu erstellen
cv_scores = []
#Führen Sie eine Kreuzvalidierung durch und hängen Sie die Punktzahl an die obige leere Liste an
for k in neighbors:
knn = KNeighborsClassifier(n_neighbors=k)
scores = cross_val_score(knn, X_train, y_train, cv=10, scoring='accuracy')
cv_scores.append(scores.mean())
Dies ist auch ein Auszug aus kevinzakkas Blog
weights Gewichte ist ein Gewichtungsparameter. Wenn "uniform" die Standardeinstellung ist und Sie sie verwenden, werden alle Werte gleichermaßen berücksichtigt. Bei Einstellung werden Entfernungen in der Nähe häufiger (gewichtet) als entfernte Punkte betrachtet. Sie können Funktionen auch selbst erstellen und angeben.
algorithm Es tut mir leid, ich habe dies nicht verstanden, weil es an mathematischer Ausbildung in Bezug auf den euklidischen Raum und technische Begriffe mangelt. Für solche Personen können Sie jedoch "Auto" angeben, und sie wählen die am besten geeignete aus. Übrigens scheinen andere Typen "ball_tree", "kd_tree", "brute" zu sein. Wenn Sie also interessiert sind, schauen Sie sich das bitte an. Wenn Sie eine leicht verständliche Erklärung finden, teilen Sie uns dies bitte in den Kommentaren mit.
Das Obige sind die Hauptparameter. Außerdem werde ich hinzufügen, sobald ich mehr verstehe. Wenn Sie verstehen, sind auch Bearbeitungsanfragen willkommen. Ich freue mich darauf, mit Dir zu arbeiten.
Je größer die Daten sind, desto wahrscheinlicher ist es, dass eine genauere Klassifizierung möglich ist. Ein einfaches und leicht verständliches Modell.
--Schlechter Punkt
Ich habe zwei schlechte Punkte in der Nachbarschaftsmethode Was ist K erwähnt, aber ich werde es noch einmal in einem Satz zusammenfassen. Wenn mehrere Klassen abnormal gemischt werden oder wenn das Verhältnis abnormal verzerrt ist, funktioniert die Klassifizierung möglicherweise nicht.
Das Obige ist der Umriss des K-nächsten Nachbarn, soweit ich verstehen kann. Wir werden es täglich aktualisieren. Wenn Sie also etwas hinzufügen oder reparieren müssen, würden wir uns freuen, wenn Sie einen Kommentar abgeben könnten.
Recommended Posts