Menu
CoddyTech

Einkaufssegmente

Teil des Abschnitts Unüberwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 48 von 51.

Ein Online-Pflanzenshop kennt seine 240 Kunden nur anhand ihres Verhaltens: Bestellungen pro Jahr, Warenkorbgröße, Anteil der im Angebot gekauften Artikel und Tage seit der letzten Bestellung.

Die 240 Kunden des Pflanzenshops als graue Punkte, Bestellungen pro Jahr auf der waagerechten Achse und durchschnittlicher Warenkorb in Euro auf der senkrechten Achse, ohne Beschriftungen: ein dichtes Band bei kleinen Warenkörben und eine kleine Gruppe mit hohen Ausgaben nahe der linken oberen Ecke

Niemand hat sie gekennzeichnet. Die Besitzerin möchte einige Segmente, die sie mit einfachen Worten beschreiben kann, und eine Rückgewinnungs-E-Mail für das Segment, das abgewandert ist.

Man lasse zwei Methoden bei k übereinstimmen: Ein Ward-Baum schlägt es vor, und die Silhouette prüft es anhand ihrer Nachbarn. Lies dann jedes Segment in realen Einheiten ab.

challenge icon

Aufgabe

Schwer

Das Programm liest ein, wo der Baum geschnitten werden soll; der Starter richtet ein Diagramm mit Titel ein.

  1. Skaliere die Merkmale und schneide dort einen Ward-Baum. Gib aus, wie viele Segmente dabei entstehen.
  2. Gib den k-Means-Silhouettenwert (3 Dezimalstellen) für dieses k und jeden benachbarten Wert sowie anschließend das beste k aus.
  3. Führe das Verfahren mit diesem Wert erneut aus und speichere das Ergebnis in plants["segment"]. Beginne mit dem größten Segment, weise jedem Segment einen Buchstaben zu und gib seine Mittelwerte in den ursprünglichen Einheiten aus; gib anschließend das Segment aus, dessen letzte Bestellung am längsten zurückliegt.
  4. Erstelle ein Streudiagramm für jedes Segment und kennzeichne es mit seinem Buchstaben; füge eine Legende hinzu und zeige das Diagramm an.

Für einen anderen Laden, schneide bei 8:

Tree cut at 8.0: 3 segments
Silhouette at k = 2: 0.573
Silhouette at k = 3: 0.675
Silhouette at k = 4: 0.630
Best k: 3
A (70): 8.6 orders a year, 29 EUR baskets, 15% on sale, last order 23 days ago
B (50): 3.1 orders a year, 22 EUR baskets, 60% on sale, last order 53 days ago
C (30): 1.8 orders a year, 89 EUR baskets, 10% on sale, last order 148 days ago
Win-back email: segment C

und sein Diagramm:

Segmente eines anderen Ladens mit dem Titel Plant Shop Segments: A, 70 Kunden mit 5 bis 14 Bestellungen pro Jahr; B, 50 mit wenigen Bestellungen und kleinen Warenkörben; C, 30 mit wenigen Bestellungen und großen Warenkörben nahe oben; mit Legende

Dann beschreibt Coddy dein Ergebnis.

Probier es selbst

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from scipy.cluster.hierarchy import linkage, fcluster

# Eine Zeile pro Kunde des Pflanzenladens
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]

# Die Höhe, auf der der Inhaber den Baum des Ladens schneidet, abgelesen aus dem Dendrogramm (3 oder mehr Segmente)
cut = float(input())

fig, ax = plt.subplots()
ax.set_title("Plant Shop Segments")
ax.set_xlabel("Orders per year")
ax.set_ylabel("Average basket (EUR)")

# Schreibe deinen Code unten
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Unüberwachtes Lernen

Übe selbstständig: Online-Python-Compiler