Wie schreibe ich einen K-Means-Clustering-Algorithmus in Python?
Der K-Means-Clustering-Algorithmus ist ein häufig verwendeter Data-Mining- und Machine-Learning-Algorithmus, der einen Datensatz anhand seiner Attribute klassifizieren und gruppieren kann. In diesem Artikel wird erläutert, wie der K-Means-Clustering-Algorithmus in Python geschrieben wird, und es werden spezifische Codebeispiele bereitgestellt.
Bevor wir mit dem Schreiben von Code beginnen, müssen wir die Grundprinzipien des K-Means-Clustering-Algorithmus verstehen.
Die grundlegenden Schritte des K-Means-Clustering-Algorithmus sind wie folgt:
Jetzt können wir mit dem Schreiben von Code beginnen.
Zuerst müssen wir die erforderlichen Bibliotheken wie Numpy und Matplotlib importieren.
import numpy as np import matplotlib.pyplot as plt
Wir müssen einen Datensatz für das Clustering vorbereiten. Hier verwenden wir Numpy, um zufällig einen Satz zweidimensionaler Daten zu generieren.
data = np.random.randn(100, 2)
Wir müssen k Schwerpunkte für den Clustering-Algorithmus initialisieren. Hier verwenden wir Numpy, um k Datenpunkte zufällig als anfängliche Schwerpunkte auszuwählen.
k = 3 centroids = data[np.random.choice(range(len(data)), k, replace=False)]
Wir müssen eine Funktion definieren, um den Abstand zwischen dem Datenpunkt und dem Massenschwerpunkt zu berechnen. Hier verwenden wir den euklidischen Abstand.
def compute_distances(data, centroids): return np.linalg.norm(data[:, np.newaxis] - centroids, axis=2)
Wir müssen eine Funktion definieren, um jeden Datenpunkt der Kategorie zuzuordnen, die durch den nächstgelegenen Schwerpunkt dargestellt wird.
def assign_clusters(data, centroids): distances = compute_distances(data, centroids) return np.argmin(distances, axis=1)
Wir müssen eine Funktion definieren, um die Position des Schwerpunkts zu aktualisieren, d. h. ihn auf den Durchschnitt aller Datenpunkte in dieser Kategorie zu setzen.
def update_centroids(data, clusters, k): centroids = [] for i in range(k): centroids.append(np.mean(data[clusters == i], axis=0)) return np.array(centroids)
Abschließend müssen wir den Clustering-Prozess wiederholen, bis sich die Position des Schwerpunkts nicht mehr ändert.
def kmeans(data, k, max_iter=100): centroids = data[np.random.choice(range(len(data)), k, replace=False)] for _ in range(max_iter): clusters = assign_clusters(data, centroids) new_centroids = update_centroids(data, clusters, k) if np.all(centroids == new_centroids): break centroids = new_centroids return clusters, centroids
Jetzt können wir den Clustering-Algorithmus ausführen, um die Kategorie, zu der jeder Datenpunkt gehört, und den endgültigen Schwerpunkt zu ermitteln.
clusters, centroids = kmeans(data, k)
Schließlich können wir matplotlib verwenden, um die Ergebnisse zu visualisieren. Jeder Datenpunkt ist entsprechend der Kategorie, zu der er gehört, farblich gekennzeichnet, und die Position des Schwerpunkts wird durch einen roten Kreis angezeigt.
plt.scatter(data[:, 0], data[:, 1], c=clusters) plt.scatter(centroids[:, 0], centroids[:, 1], s=100, c='red', marker='o') plt.show()
Durch das obige Codebeispiel können wir den K-Means-Clustering-Algorithmus in Python implementieren. Sie können die Anzahl der Cluster k und andere Parameter entsprechend Ihren Anforderungen anpassen. Ich hoffe, dieser Artikel hilft Ihnen, den K-Means-Clustering-Algorithmus zu verstehen und zu implementieren!
Das obige ist der detaillierte Inhalt vonWie schreibe ich einen K-Means-Clustering-Algorithmus in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!