Kundensegmente
Teil des Abschnitts Unüberwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 39 von 51.
Dieses Kapitel setzt Cluster praktisch ein, bis hin zu einer nach Stimmung zusammengestellten Playlist:
Zuerst Segmente: Cluster, auf die Menschen reagieren können. Ein Hostel skalierte zwei Merkmale und bildete Cluster seiner Gäste:
Reale Einheiten zeigen, wie ein Segment aussieht. Sein skalierter Mittelpunkt zeigt, was es auszeichnet: jedes Merkmal in Standardabweichungen vom Durchschnittsgast.
X = StandardScaler().fit_transform(guests[["nights", "days_ahead"]])
km = KMeans(n_clusters=3, n_init=10, random_state=0).fit(X)
print(km.cluster_centers_.round(1))Dies gibt Folgendes aus:
[[ 1.3 -0.7]
[-0.7 -0.7]
[-0.7 1.4]]Die Zahl in jeder Zeile, die am weitesten von 0 entfernt ist, bezeichnet ihr Segment. Zeile 0 bleibt 1.3 std länger: Rucksackreisende. Zeile 2 bucht 1.4 std früher: Klassenfahrten.
Aufgabe
MittelEin Theater möchte mehr über seine 166 Mitglieder erfahren. Das Programm liest die Merkmale ein, nach denen segmentiert werden soll, zum Beispiel age,ticket_price.
- Skaliere diese Spalten, gruppiere sie mithilfe der Hilfsfunktion aus dem Startercode in
best_k(X)Segmente und gib die Anzahl aus. - Gib die Segmente absteigend nach Größe aus, jeweils mit ihrer Größe und Bezeichnung: dem Merkmal des Zentrums, das am weitesten von 0 entfernt ist,
highoderlow, und dem Abstand.
Für ein anderes Theater und age,shows_per_year:
4 segments
57 members: high shows_per_year (1.2 std from average)
52 members: low shows_per_year (1.0 std from average)
40 members: low age (1.4 std from average)
32 members: high age (1.5 std from average)Probier es selbst
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# Eine Zeile pro Theatermitglied
members = pd.read_csv("theatre.csv")
# Die Merkmale für die Segmentierung, zum Beispiel age,ticket_price
features = input().split(",")
# Anhand der Silhouettenwerte: das k von 2 bis 6 mit dem besten Silhouettenwert für X
def best_k(X):
best, best_score = 2, -1
for k in range(2, 7):
labels = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)
score = silhouette_score(X, labels)
if score > best_score:
best, best_score = k, score
return best
# Schreibe deinen Code unten
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
1Gruppen finden
Lernen ohne LabelsÄhnlichkeit messenK-Means von HandK-Means mit scikit-learnRückblick: Fitnessstudiomitglieder4Hierarchisches Clustering
Schrittweises ZusammenführenAgglomerative ModelleDendrogrammeZusammenfassung: Hunderassen7PCA in der Praxis
64 Dimensionen sehenKomponenten als MusterKomprimieren und rekonstruierenPCA vor einem ModellRückblick: Gesichtsscanner10Projekt: Ziffern erkunden
Die Ziffern ansehenMit PCA verkleinernDie Ziffern gruppierenDie Gruppen benennenDie Ausreißer finden2k wählen
TrägheitDie Elbow-MethodeSilhouettenwerteVor dem Clustering skalierenRückblick: LieferzonenÜbe selbstständig: Online-Python-Compiler