Segmenti di clientela
Fa parte della sezione Apprendimento non supervisionato del percorso Machine Learning di Coddy. Lezione 39 di 51.
In questo capitolo mettiamo al lavoro i cluster, fino a creare una playlist organizzata per umore:
Per prima cosa, i segmenti: gruppi su cui è possibile agire. Un ostello ha scalato due caratteristiche e suddiviso i suoi ospiti in gruppi:
Le unità reali descrivono com'è un segmento. Il suo centro scalato mostra cosa lo distingue: ogni caratteristica in deviazioni standard rispetto all'ospite medio.
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))Questo stampa:
[[ 1.3 -0.7]
[-0.7 -0.7]
[-0.7 1.4]]Il numero di ogni riga più distante da 0 indica il suo segmento. La riga 0 resta 1.3 deviazioni standard più a lungo: viaggiatori con lo zaino in spalla. La riga 2 prenota 1.4 deviazioni standard prima: gite scolastiche.
Sfida
MedioUn teatro vuole conoscere i suoi 166 membri. Il programma legge le caratteristiche in base alle quali suddividerli, come age,ticket_price.
- Scala quelle colonne, raggruppa in segmenti usando
best_k(X)dell'helper fornito nel codice iniziale e stampa quanti sono. - Partendo dal più grande, stampa la dimensione e il nome di ogni segmento: la caratteristica del suo centro più lontana da 0,
higholow, e di quanto.
Per un altro teatro e 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)Provalo tu
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# Una riga per ogni membro del teatro
members = pd.read_csv("theatre.csv")
# Le caratteristiche in base alle quali effettuare la segmentazione, come age,ticket_price
features = input().split(",")
# Dai punteggi di silhouette: il valore di k da 2 a 6 con la silhouette migliore per 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
# Scrivi il tuo codice qui sotto
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Apprendimento non supervisionato
1Trovare gruppi
Apprendimento senza etichetteMisurare la similaritàK-Means a manoK-Means in scikit-learnRiepilogo: iscritti alla palestra4Clustering gerarchico
Unire passo dopo passoModelli agglomerativiDendrogrammiRiepilogo: razze canine7PCA nella pratica
Vedere 64 dimensioniComponenti come schemiComprimere e ricostruirePCA prima di un modelloRiepilogo: scanner facciale10Progetto: Esplorare le cifre
Osserva le cifreRiduci con PCARaggruppa le cifreDai un nome ai gruppiTrova gli elementi insoliti2Scelta di k
InerziaIl metodo del gomitoPunteggi silhouetteScala prima del clusteringRiepilogo: zone di consegna3Interpretare i cluster
Caratterizzare i clusterCentri in unità realiCluster ed etichette noteQuando K-Means fallisceRiepilogo: degustazione del tè9Cluster al lavoro
Segmenti di clientelaI cluster come caratteristicheColori delle immaginiRipasso: stati d’animo delle playlistEsercitati da solo: Compilatore Python online