Der KNN-Algorithmus ist ein einfacher und benutzerfreundlicher Klassifizierungsalgorithmus, der für kleine Datensätze und niedrigdimensionale Merkmalsräume geeignet ist. Es schneidet in Bereichen wie der Bildklassifizierung und der Textklassifizierung gut ab und ist wegen seiner einfachen Implementierung und leichten Verständlichkeit beliebt.
Die Grundidee des KNN-Algorithmus besteht darin, die nächsten K Nachbarn zu finden, indem die Merkmale der zu klassifizierenden Stichprobe mit den Merkmalen der Trainingsstichprobe verglichen werden, und anhand dieser die Kategorie der zu klassifizierenden Stichprobe zu bestimmen die Kategorien dieser K Nachbarn. Der KNN-Algorithmus verwendet einen Trainingssatz mit beschrifteten Kategorien und einen zu klassifizierenden Testsatz. Der Klassifizierungsprozess des KNN-Algorithmus umfasst die folgenden Schritte: Berechnen Sie zunächst den Abstand zwischen der zu klassifizierenden Stichprobe und allen Trainingsstichproben. Wählen Sie dann die K nächsten Nachbarn aus, um die zu erhalten Als Kategorie der klassifizierten Stichprobe wird schließlich die Kategorie der zu klassifizierenden Stichprobe ermittelt, die in den Abstimmungsergebnissen die meisten Stimmen erhält. Durch diese Schritte kann der KNN-Algorithmus die zu klassifizierenden Proben genau klassifizieren.
1. Berechnen Sie den Abstand
Für nicht klassifizierte Testproben ist es notwendig, den Abstand zwischen ihnen und allen Proben im Trainingssatz zu berechnen.
2. Wählen Sie K Nachbarn aus.
Wählen Sie entsprechend der berechneten Entfernung die K-Trainingssatzproben aus, die der zu klassifizierenden Probe am nächsten liegen. Diese Proben sind die K Nachbarn der zu klassifizierenden Probe.
3. Bestimmen Sie die Kategorie
Bestimmen Sie die Kategorie der zu klassifizierenden Stichprobe basierend auf den Kategorien der K-Nachbarn. Zur Bestimmung der Kategorie der zu klassifizierenden Stichprobe wird üblicherweise die „Mehrheitsabstimmungsmethode“ verwendet, d. h. die Kategorie, die unter den K-Nachbarn am häufigsten vorkommt, wird als Kategorie der zu klassifizierenden Stichprobe ausgewählt.
Der KNN-Algorithmus ist relativ einfach, aber es gibt einige Probleme, die Aufmerksamkeit erfordern. Erstens hat die Wahl des K-Werts einen großen Einfluss auf die Leistung des Algorithmus. Normalerweise muss der optimale K-Wert durch Kreuzvalidierung und andere Methoden ermittelt werden. Zweitens reagiert der KNN-Algorithmus empfindlich auf die Größe und Dimension des Datensatzes, und bei der Verarbeitung großer und hochdimensionaler Datensätze treten Effizienzprobleme auf. Darüber hinaus weist der KNN-Algorithmus auch das Problem eines „Kategorieungleichgewichts“ auf, das heißt, die Anzahl der Stichproben in bestimmten Kategorien ist gering, was dazu führen kann, dass der Algorithmus eine schlechte Klassifizierungswirkung auf diese Kategorien hat.
Das Folgende ist ein Klassifizierungsbeispiel mit Python zur Implementierung des KNN-Algorithmus. Der Code lautet wie folgt:
import numpy as np from collections import Counter class KNN: def __init__(self, k): self.k = k def fit(self, X, y): self.X_train = X self.y_train = y def predict(self, X_test): predictions = [] for x_test in X_test: distances = [] for x_train in self.X_train: distance = np.sqrt(np.sum((x_test - x_train)**2)) distances.append(distance) idx = np.argsort(distances)[:self.k] k_nearest_labels = [self.y_train[i] for i in idx] most_common = Counter(k_nearest_labels).most_common(1) predictions.append(most_common[0][0]) return np.array(predictions)
Der im Konstruktor dieser KNN-Klasse übergebene Parameter k gibt an, wie viele Nachbarn für die Klassifizierung ausgewählt werden. Die Anpassungsmethode wird zum Trainieren des Modells verwendet und akzeptiert einen Trainingssatz X und die entsprechenden Bezeichnungen y. Die Vorhersagemethode wird zum Klassifizieren des Testsatzes verwendet, akzeptiert einen Testsatz X_test und gibt die vorhergesagte Bezeichnung zurück.
Bei der Vorhersagemethode berechnen Sie für jede Testprobe zunächst ihren Abstand zu allen Proben im Trainingssatz und wählen die k nächstgelegenen Proben aus. Dann werden die am häufigsten vorkommenden Etiketten unter diesen k Proben gezählt und als Klassifizierungsetiketten der Testproben verwendet.
Das Folgende ist ein Beispiel für die Verwendung dieser KNN-Klasse zur Klassifizierung. Der Datensatz ist eine Punktmenge auf einer zweidimensionalen Ebene, wobei die roten Punkte Kategorie 1 und die blauen Punkte Kategorie 2 darstellen:
import matplotlib.pyplot as plt # 生成数据集 X = np.random.rand(200, 2) * 5 - 2.5 y = np.zeros(200) y[np.sum(X**2, axis=1) > 2] = 1 # 分割训练集和测试集 train_idx = np.random.choice(200, 150, replace=False) test_idx = np.array(list(set(range(200)) - set(train_idx))) X_train, y_train = X[train_idx], y[train_idx] X_test, y_test = X[test_idx], y[test_idx] # 训练模型并进行预测 knn = KNN(k=5) knn.fit(X_train, y_train) y_pred = knn.predict(X_test) # 计算准确率并绘制分类结果 accuracy = np.mean(y_pred == y_test) print("Accuracy:", accuracy) plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred) plt.show()
Nachher Wenn Sie diesen Code ausführen, können Sie das Bild des Klassifizierungsergebnisses sehen. Unter diesen repräsentiert die Farbe die vorhergesagte Kategorie, Rot repräsentiert Kategorie 1 und Blau repräsentiert Kategorie 2. Basierend auf den Klassifizierungsergebnissen kann die Genauigkeit des Modells berechnet werden.
Dieses Beispiel zeigt die Anwendung des KNN-Algorithmus auf einer zweidimensionalen Ebene, bei der Nachbarn durch die Berechnung von Entfernungen bestimmt und nach ihren Kategorien klassifiziert werden. In praktischen Anwendungen kann der KNN-Algorithmus in der Bildklassifizierung, Textklassifizierung und anderen Bereichen verwendet werden. Er ist ein einfacher und effektiver Klassifizierungsalgorithmus.
Das obige ist der detaillierte Inhalt vonGrundprinzipien und Beispiele der KNN-Algorithmusklassifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!