Wie schreibe ich einen KNN-Algorithmus in Python?

WBOY
Freigeben: 2023-09-19 13:18:29
Original
1239 Leute haben es durchsucht

Wie schreibe ich einen KNN-Algorithmus in Python?

Wie schreibe ich einen KNN-Algorithmus in Python?

KNN (K-Nearest Neighbors, K-Nearest-Neighbors-Algorithmus) ist ein einfacher und häufig verwendeter Klassifizierungsalgorithmus. Die Idee besteht darin, Testproben in die nächsten K Nachbarn zu klassifizieren, indem der Abstand zwischen verschiedenen Proben gemessen wird. In diesem Artikel wird das Schreiben und Implementieren des KNN-Algorithmus mit Python vorgestellt und spezifische Codebeispiele bereitgestellt.

Zuerst müssen wir einige Daten vorbereiten. Angenommen, wir haben einen zweidimensionalen Datensatz und jede Stichprobe weist zwei Merkmale auf. Wir haben den Datensatz in zwei Kategorien unterteilt und sie auf einer zweidimensionalen Ebene dargestellt. Der Code lautet wie folgt:

import numpy as np
import matplotlib.pyplot as plt

# 生成随机数据
np.random.seed(0)
X1 = np.random.randn(100, 2) + np.array([0, 2])
X2 = np.random.randn(100, 2) + np.array([2, 0])
X = np.vstack((X1, X2))
y = np.hstack((np.zeros(100), np.ones(100)))

# 绘制数据集
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()
Nach dem Login kopieren

Als nächstes müssen wir den Implementierungscode des KNN-Algorithmus schreiben. Zuerst definieren wir eine Funktion zur Berechnung des euklidischen Abstands zwischen zwei Stichproben. Der Code lautet wie folgt:

def euclidean_distance(x1, x2):
    return np.sqrt(np.sum((x1 - x2)**2))
Nach dem Login kopieren

Dann schreiben wir eine Funktion, um die Kategorie einer Testprobe vorherzusagen. Diese Funktion berechnet zunächst den Abstand zwischen der Teststichprobe und allen Trainingsstichproben, wählt dann die K nächstgelegenen Stichproben aus, stimmt basierend auf den Kategorien dieser K Nachbarn ab und gibt schließlich die Kategorie mit den meisten Stimmen als Vorhersageergebnis zurück. Der Code lautet wie folgt:

def knn_predict(X_train, y_train, x_test, k):
    distances = [euclidean_distance(x_test, x) for x in X_train]
    k_indices = np.argsort(distances)[:k]
    k_nearest_labels = [y_train[i] for i in k_indices]
    return np.argmax(np.bincount(k_nearest_labels))
Nach dem Login kopieren

Schließlich teilen wir den Datensatz in einen Trainingssatz und einen Testsatz auf und verwenden den KNN-Algorithmus zur Vorhersage. Der Code lautet wie folgt:

from sklearn.model_selection import train_test_split

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 对每个测试样本进行预测
predictions = [knn_predict(X_train, y_train, x_test, k=3) for x_test in X_test]

# 计算准确率
accuracy = np.mean(predictions == y_test)
print("Accuracy:", accuracy)
Nach dem Login kopieren

Durch das obige Codebeispiel haben wir das Schreiben des KNN-Algorithmus abgeschlossen. Es ist ersichtlich, dass die Verwendung von Python zur Implementierung des KNN-Algorithmus relativ einfach ist und nur wenig Code erfordert. In praktischen Anwendungen können wir den K-Wert entsprechend spezifischer Probleme anpassen, um den besten Klassifizierungseffekt zu erzielen.

Zusammenfassend stellt dieser Artikel vor, wie Sie mit Python den KNN-Algorithmus schreiben, einschließlich Schritten wie Datenvorbereitung, Berechnung der euklidischen Distanz, Algorithmusimplementierung und Genauigkeitsberechnung. Ich hoffe, dass dieser Artikel den Lesern helfen kann, den KNN-Algorithmus zu verstehen und anzuwenden.

Das obige ist der detaillierte Inhalt vonWie schreibe ich einen KNN-Algorithmus in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage