K-Means++ Clustering mit Scikit-Learn

Beginner

This tutorial is from open-source community. Access the source code

Einführung

In diesem Lab werden wir die Initialisierung von K-Means++ mithilfe der scikit-learn-Bibliothek in Python lernen. K-Means++ ist ein populärer Algorithmus zur Gruppierung von Daten in Gruppen basierend auf Ähnlichkeiten. Es wird als Standardinitialisierung für k-means verwendet. In diesem Lab werden wir Beispiel-Daten generieren, die Initialwerte aus K-Means++ berechnen und die Initialwerte zusammen mit den Beispiel-Daten darstellen.

Tipps für die VM

Nachdem der Start der VM abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Beispiel-Daten generieren

Wir werden die Funktion make_blobs der scikit-learn-Bibliothek verwenden, um Beispiel-Daten zu generieren. Diese Funktion erzeugt isotrope Gaussian-Blobs für die Gruppierung. Wir werden 4000 Proben mit 4 Zentren generieren.

## Generate sample data
n_samples = 4000
n_components = 4

X, y_true = make_blobs(
    n_samples=n_samples, centers=n_components, cluster_std=0.60, random_state=0
)
X = X[:, ::-1]

Initialwerte aus K-Means++ berechnen

Wir werden die Funktion kmeans_plusplus der scikit-learn-Bibliothek verwenden, um die Initialwerte aus K-Means++ zu berechnen. Diese Funktion gibt die initialen Clusterzentren zurück, die für die k-means-Gruppierung verwendet werden. Wir werden 4 Cluster mit K-Means++ berechnen.

## Calculate seeds from k-means++
centers_init, indices = kmeans_plusplus(X, n_clusters=4, random_state=0)

Initialwerte zusammen mit Beispiel-Daten darstellen

Wir werden die matplotlib-Bibliothek verwenden, um die Initialwerte zusammen mit den Beispiel-Daten darzustellen. Die Initialwerte werden als blaue Punkte dargestellt, und die Beispiel-Daten werden als gefärbte Punkte dargestellt.

## Plot init seeds along side sample data
plt.figure(1)
colors = ["#4EACC5", "#FF9C34", "#4E9A06", "m"]

for k, col in enumerate(colors):
    cluster_data = y_true == k
    plt.scatter(X[cluster_data, 0], X[cluster_data, 1], c=col, marker=".", s=10)

plt.scatter(centers_init[:, 0], centers_init[:, 1], c="b", s=50)
plt.title("K-Means++ Initialization")
plt.xticks([])
plt.yticks([])
plt.show()

Zusammenfassung

In diesem Lab haben wir die Initialisierung von K-Means++ mithilfe der scikit-learn-Bibliothek in Python gelernt. Wir haben Beispiel-Daten generiert, die Initialwerte aus K-Means++ berechnet und die Initialwerte zusammen mit den Beispiel-Daten dargestellt. K-Means++ ist ein populärer Algorithmus zur Gruppierung von Daten in Gruppen basierend auf Ähnlichkeiten und wird als Standardinitialisierung für k-means verwendet.