Zum Inhalt springen

Hierarchisches Clustering

Das hierarchische Clustering ist eine Methode des maschinellen Lernens, die verwendet wird, um Datenpunkte basierend auf ihren Ähnlichkeiten in Cluster zu gruppieren. Es ist ein leistungsstarker Algorithmus, der dabei helfen kann, verborgene Muster und Strukturen in einem Datensatz zu entdecken. In diesem Artikel werden wir das Konzept des hierarchischen Clustering, seine Arten und die Implementierung in Python untersuchen.

Was ist hierarchisches Clustering?

Das hierarchische Clustering ist eine Technik, die verwendet wird, um ähnliche Objekte in Cluster zu gruppieren. Es basiert auf dem Prinzip, ähnliche Objekte zusammenzufassen und sie schrittweise zu größeren Clustern zu verschmelzen, bis sich alle Objekte in einem einzigen Cluster befinden. Die Ausgabe des hierarchischen Clustering-Algorithmus ist ein Dendrogramm, eine baumartige Darstellung, die die hierarchischen Beziehungen zwischen den Clustern zeigt.

Arten des hierarchischen Clustering

Es gibt zwei Hauptarten des hierarchischen Clustering:

  1. Agglomeratives Clustering: Dies ist ein Bottom-up-Ansatz, bei dem jeder Datenpunkt als separater Cluster behandelt und dann zu größeren Clustern zusammengeführt wird.
  2. Divisives Clustering: Dies ist ein Top-down-Ansatz, bei dem alle Datenpunkte zunächst als ein einziger Cluster betrachtet und dann rekursiv in kleinere Cluster aufgeteilt werden.

Wie funktioniert hierarchisches Clustering?

Das hierarchische Clustering funktioniert, indem die Distanz zwischen allen Paaren von Datenpunkten berechnet und dann das nächstgelegene Clusterpaar iterativ verschmolzen wird, bis alle Datenpunkte zu einem einzigen Cluster gehören. Die Distanz zwischen zwei Clustern kann mit verschiedenen Distanzmaßen berechnet werden, wie z. B. der euklidischen Distanz, der Manhattan-Distanz und der Kosinus-Ähnlichkeit.

Implementierung von hierarchischem Clustering in Python

Python bietet mehrere Bibliotheken zur Implementierung von hierarchischem Clustering, wie Scikit-learn, SciPy und PyClustering. In diesem Artikel verwenden wir die Scikit-learn-Bibliothek, um hierarchisches Clustering zu implementieren.

Schritt 1: Importieren von Bibliotheken und Laden von Daten

Laden von Daten für hierarchisches Clustering in Python

python
import pandas as pd
import numpy as np
from sklearn.cluster import AgglomerativeClustering
from sklearn.preprocessing import StandardScaler

# Load data
data = pd.read_csv('data.csv')
X = data.iloc[:, [0, 1, 2]].values

Schritt 2: Datenvorverarbeitung

Bevor wir hierarchisches Clustering anwenden, müssen wir die Daten vorverarbeiten, indem wir sie skalieren, um einen Mittelwert von null und eine Varianz von eins zu haben. Dies geschieht, um sicherzustellen, dass alle Variablen gleichmäßig zum Clustering-Prozess beitragen.

Vorverarbeitung von Daten für hierarchisches Clustering in Python

python
# Scale data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

Schritt 3: Anwenden von hierarchischem Clustering

Wir verwenden die Klasse AgglomerativeClustering aus Scikit-learn, um hierarchisches Clustering auf unseren Datensatz anzuwenden. Wir setzen die Anzahl der Cluster auf 3 und verwenden die Ward-Verknüpfungsmethode, die die Varianz der zu verschmelzenden Cluster minimiert.

Anwenden von hierarchischem Clustering auf unseren Datensatz in Python

python
# Apply hierarchical clustering
hc = AgglomerativeClustering(n_clusters=3, linkage='ward')
y_hc = hc.fit_predict(X_scaled)

Schritt 4: Visualisierung der Cluster

Wir können die Cluster visualisieren, indem wir einen Streudiagramm-Plot der Datenpunkte erstellen, wobei verschiedene Farben die verschiedenen Cluster darstellen.

Visualisieren der Cluster durch Erstellen eines Streudiagramms der Datenpunkte mit verschiedenen Farben für die verschiedenen Cluster in Python

python
import matplotlib.pyplot as plt

# Create scatter plot
plt.scatter(X_scaled[y_hc == 0, 0], X_scaled[y_hc == 0, 1], s=100, c='red', label='Cluster 1')
plt.scatter(X_scaled[y_hc == 1, 0], X_scaled[y_hc == 1, 1], s=100, c='blue', label='Cluster 2')
plt.scatter(X_scaled[y_hc == 2, 0], X_scaled[y_hc == 2, 1], s=100, c='green', label='Cluster 3')

# Add labels and title
plt.title('Hierarchical Clustering')
plt.xlabel('X')
plt.ylabel('Y')

# Add legend
plt.legend()

# Show plot
plt.show()

Im obigen Code verwenden wir boolesche Indizierung, um die Datenpunkte auszuwählen, die zu jedem Cluster gehören, und zeichnen sie mit einer anderen Farbe. Wir fügen auch Achsenbeschriftungen, einen Titel für den Plot und eine Legende hinzu, um die verschiedenen Cluster zu identifizieren. Abschließend zeigen wir den Plot mit der Funktion show() an.

Fazit

Das hierarchische Clustering ist eine leistungsstarke Technik, die dabei helfen kann, verborgene Strukturen in einem Datensatz aufzudecken. Es ist ein einfacher und intuitiver Algorithmus, der auf eine Vielzahl von Datentypen und -größen angewendet werden kann. In diesem Artikel haben wir das Konzept des hierarchischen Clustering, seine Arten und die Implementierung in Python mit der Scikit-learn-Bibliothek untersucht.

Indem Sie die in diesem Artikel beschriebenen Schritte befolgen, können Sie hierarchisches Clustering auf Ihren eigenen Datensatz anwenden und die resultierenden Cluster visualisieren. Dies kann dabei helfen, Muster und Zusammenhänge in den Daten zu identifizieren, die für weitere Analysen oder Entscheidungsprozesse nützlich sein können.

Wenn Sie mehr über hierarchisches Clustering oder andere Methoden des maschinellen Lernens erfahren möchten, gibt es online viele verfügbare Ressourcen, einschließlich Tutorials, Kurse und Bücher. Durch kontinuierliches Lernen und Erkunden neuer Techniken können Sie stets am Puls der Zeit bleiben und zu einem kompetenteren Data Scientist werden.

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.