Woche 9 | Session 3: K-means Clustering — Python Implementierung (Google Colab)
Kurs: Supply Chain Digitalisierung — Modul 3: Analytics im SCM
Session-Agenda
Abschnitt betitelt „Session-Agenda“1. Kontext & Session-Ziel
Abschnitt betitelt „1. Kontext & Session-Ziel“- Vorherige Sessions: Konzept — was K-means ist, wie der Algorithmus funktioniert, WCSS, Elbow-Methode.
- Diese Session: Implementierung — Python-Code in Google Colab schreiben, den Cluster-Output reproduzieren.
- Datensatz:
customer_location.csv— 811 Zeilen, 3 Spalten (Seriennummer, Breiten-, Längengrad).
2. Verwendete Bibliotheken
Abschnitt betitelt „2. Verwendete Bibliotheken“| Bibliothek / Alias | Zweck |
|---|---|
| pandas (pd) | Datenmanipulation und -analyse — CSV lesen, DataFrames erstellen. |
| numpy (np) | Numerical Python — mathematische und logische Operationen auf Arrays. |
| matplotlib.pyplot (plt) | Plotting-Bibliothek — Liniendiagramme, Streudiagramme (Scatter Plots). |
| seaborn (sn) | High-Level-Visualisierung — attraktive Cluster-Plots mit Farbcodierung. |
| sklearn.cluster.KMeans | K-means-Implementierung — Cluster fitten, Labels & Zentroide extrahieren. |
3. Vollständige Pipeline — 8 Schritte
Abschnitt betitelt „3. Vollständige Pipeline — 8 Schritte“- Daten importieren: Laden von
customer_location.csvmittels Pandas. - Rohdaten plotten: Visualisierung aller 811 Punkte in einem Lat/Long-Streudiagramm (seaborn).
- Features auswählen: Seriennummer-Spalte entfernen — nur Lat & Long behalten.
- Optimales K finden: Schleife K=1 bis 9, WCSS berechnen, Elbow-Diagramm zeichnen.
- Cluster bilden:
KMeans(n_clusters=4).fit()ausführen. IDs zuweisen. - Cluster plotten: Farbcodiertes Streudiagramm.
- Zentroide ermitteln:
cluster_centers_(vorgeschlagene DC-Standorte) extrahieren. - Zentroide plotten: Markierungen (‘x’) über das Cluster-Diagramm legen.
4. Schritt-für-Schritt Code & Erklärung
Abschnitt betitelt „4. Schritt-für-Schritt Code & Erklärung“Schritt 1 — Daten importieren
Abschnitt betitelt „Schritt 1 — Daten importieren“import pandas as pddf = pd.read_csv('customer_location.csv')df.head()Schritt 2 — Rohdaten plotten
Abschnitt betitelt „Schritt 2 — Rohdaten plotten“import numpy as npimport matplotlib.pyplot as pltimport seaborn as sn
sn.lmplot(x='latitude', y='longitude', data=df, fit_reg=False, height=4)plt.title('Kundenstandorte')plt.show()Schritt 3 — Features auswählen
Abschnitt betitelt „Schritt 3 — Features auswählen“Irrelevante Spalten entfernen.
new_df = df[['latitude', 'longitude']]Schritt 4 — Optimales K finden (Elbow-Diagramm)
Abschnitt betitelt „Schritt 4 — Optimales K finden (Elbow-Diagramm)“from sklearn.cluster import KMeans
cluster_range = range(1, 10) # K = 1 bis 9cluster_errors = [] # leere Liste für WCSS-Werte
for num_clusters in cluster_range: clusters = KMeans(num_clusters) clusters.fit(new_df) cluster_errors.append(clusters.inertia_) # inertia_ = WCSS
plt.figure(figsize=(6, 4))plt.plot(cluster_range, cluster_errors, marker='o')plt.title('Elbow-Diagramm')plt.xlabel('Anzahl der Cluster')plt.ylabel('Summe der Fehlerquadrate (WCSS)')plt.show()Schritt 5 — Cluster bilden (K = 4)
Abschnitt betitelt „Schritt 5 — Cluster bilden (K = 4)“clusters_new = KMeans(4) # K = 4 setzenclusters_new.fit(new_df)
# Cluster-ID als neue Spalte hinzufügennew_df.insert(loc=2, column='cluster_id', value=clusters_new.labels_)Schritt 6 — Cluster plotten
Abschnitt betitelt „Schritt 6 — Cluster plotten“sn.lmplot(x='latitude', y='longitude', data=new_df, hue='cluster_id', fit_reg=False, height=4)plt.show()Schritt 7 — Zentroid-Koordinaten extrahieren
Abschnitt betitelt „Schritt 7 — Zentroid-Koordinaten extrahieren“centers = np.array(clusters_new.cluster_centers_)print(centers)# Output-Beispiel:# Cluster 0: [27.68, 80.90]Schritt 8 — Zentroide auf Cluster-Karte plotten
Abschnitt betitelt „Schritt 8 — Zentroide auf Cluster-Karte plotten“sn.lmplot(x='latitude', y='longitude', data=new_df, hue='cluster_id', fit_reg=False, height=4)
plt.scatter(centers[:, 0], centers[:, 1], marker='x', s=100, c='black')plt.show()5. Finaler Output — Zentroid (DC) Standorte
Abschnitt betitelt „5. Finaler Output — Zentroid (DC) Standorte“Nach Ausführung des Codes liefert K-means 4 Zentroide — die vorgeschlagenen DC-Standorte:
| Cluster ID | Zentroid Lat | Zentroid Long | Vorgeschlagenes DC bedient… |
|---|---|---|---|
| 0 | 27.68 | 80.90 | Blaue Cluster-Kunden |
| 1 | 27.42 | 81.15 | Orangefarbene Cluster-Kunden |
| 2 | 27.31 | 80.83 | Grüne Cluster-Kunden |
| 3 | 27.56 | 80.57 | Rote Cluster-Kunden |
Zusammenfassung der Session
Abschnitt betitelt „Zusammenfassung der Session“- Pipeline: Import → Rohdaten plotten → Features wählen → Elbow-Diagramm → Fit K=4 → Cluster plotten → Zentroide extrahieren → Zentroide plotten.
- Wichtigster Output: 4 Zentroid-Koordinaten = vorgeschlagene DC-Standorte; 811 Cluster-IDs = Kunden-DC-Zuweisung.
- Tool: Google Colab.