Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen K-Means Clustering | Grundlegende Clustering-Algorithmen
Clusteranalyse
course content

Kursinhalt

Clusteranalyse

Clusteranalyse

1. Was Ist Clustering?
2. Grundlegende Clustering-Algorithmen
3. Wie Wählt Man das Beste Modell Aus?

book
K-Means Clustering

K-means Clustering ist der beliebteste Clustering-Algorithmus, der verwendet wird, um ähnliche Datenpunkte in einem Datensatz zu gruppieren. Der Algorithmus funktioniert, indem zunächst ein Wert k ausgewählt wird, der die Anzahl der Cluster oder Gruppen darstellt, die wir in den Daten identifizieren möchten.

Lassen Sie uns kurz alle Phasen des Betriebs dieses Algorithmus beschreiben:

Schritt 1. Der Algorithmus initialisiert k zufällige Punkte im Datensatz, die als Zentroiden bezeichnet werden;

Schritt 2. Jeder Datenpunkt wird dann dem nächstgelegenen Schwerpunkt basierend auf einer Distanzmetrik, wie der euklidischen Distanz, zugewiesen. Dieser Prozess erstellt k Cluster, wobei jedes Cluster aus den Datenpunkten besteht, die dem Schwerpunkt am nächsten sind;

Schritt 3. Die Schwerpunkte werden in die Mitte jedes Clusters verschoben;

Schritt 4. Schritte 2 und 3 werden wiederholt. Der Algorithmus aktualisiert iterativ die Zentroiden und ordnet die Datenpunkte neu zu, bis er konvergiert, wenn sich die Zentroiden nicht mehr bewegen.

Wir können sehen, dass dieser Algorithmus ziemlich einfach und intuitiv ist, aber er hat einige gravierende Nachteile:

  • Wir müssen die Anzahl der Cluster manuell wählen;
  • Der Algorithmus hängt von den anfänglichen Zentroidwerten ab;
  • Der Algorithmus ist stark von Ausreißern beeinflusst.

Schauen wir uns die Implementierung von K-means in Python an:

12345678910111213141516171819202122232425262728
from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt import warnings warnings.filterwarnings('ignore') # Create toy dataset to show K-means clustering model X = np.array([[1, 3], [2, 1], [1, 5], [8, 4], [11, 3], [15, 0], [6,1], [10,3], [3,7], [4,5], [12,7]]) # Fit K-means model for 2 clusters kmeans = KMeans(n_clusters=2).fit(X) # Print labels for train data print('Train labels are: ', kmeans.labels_) # Print coordinates of cluster centers print('Cluster centers are: ', kmeans.cluster_centers_) # Visualize the results of clustering fig, axes = plt.subplots(1, 2) axes[0].scatter(X[:, 0], X[:, 1], c=kmeans.labels_, s=50, cmap='tab20b') axes[0].scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], c='red', s=100) axes[0].set_title('Train data points') # Provide predictions for new data predicted_labels = kmeans.predict([[10, 5], [4, 2], [3, 3], [6, 3]]) print('Predicted labels are: ', predicted_labels) # Visualize prediction results axes[1].scatter([10, 4, 3, 6], [5, 2, 3, 3], c=predicted_labels, s=50, cmap='tab20b') axes[1].scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], c='red', s=100) axes[1].set_title('Test data points')
copy

Im obigen Code haben wir Folgendes verwendet:

  1. Kmeans-Klasse aus sklearn. cluster. Der n_clusters-Parameter bestimmt die Anzahl der Cluster in den Daten;
  2. .fit(X)-Methode der Kmeans-Klasse passt unser Modell an - bestimmt Cluster und deren Zentren gemäß den Daten X;
  3. .labels_-Attribut der KMeans-Klasse speichert die Cluster-Nummern für jede Probe der Trainingsdaten (0 Cluster, 1 Cluster, 2 Cluster,...);
  4. .cluster_centers_-Attribut der KMeans-Klasse speichert die vom Algorithmus angepassten Cluster-Zentren-Koordinaten;
  5. .predict()-Methode der Kmeans-Klasse wird verwendet, um die Labels neuer Punkte vorherzusagen.
Sollten wir den K-means-Algorithmus für Clustering-Aufgaben verwenden, wenn wir die Anzahl der Cluster, in die unsere Daten unterteilt werden sollen, nicht manuell bestimmen können?

Sollten wir den K-means-Algorithmus für Clustering-Aufgaben verwenden, wenn wir die Anzahl der Cluster, in die unsere Daten unterteilt werden sollen, nicht manuell bestimmen können?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 1
We're sorry to hear that something went wrong. What happened?
some-alt