Segmenti di acquisti
Fa parte della sezione Apprendimento non supervisionato del percorso Machine Learning di Coddy. Lezione 48 di 51.
Un negozio di piante online conosce i suoi 240 clienti solo da ciò che fanno: ordini all’anno, dimensione del carrello, quota di acquisti in saldo e giorni dall’ultimo ordine.
Nessuno li ha etichettati. La proprietaria vuole alcuni segmenti che possa descrivere con parole semplici e un'email per riconquistare quello che si è allontanato.
Fai concordare i due metodi su k: un albero dei ward lo suggerisce e il silhouette lo verifica rispetto ai suoi vicini. Poi leggi ogni segmento in unità reali.
Sfida
DifficileIl programma legge il punto in cui tagliare l’albero; il codice iniziale prepara un grafico con un titolo.
- Scala le caratteristiche e taglia lì un albero ward. Stampa quanti segmenti crea.
- Stampa il coefficiente silhouette di k-means (3 decimali) per quel k e per ciascun valore adiacente, poi il k migliore.
- Adatta di nuovo il modello con il valore migliore in
plants["segment"]. Dal più grande al più piccolo, assegna una lettera a ogni segmento e stampa le medie nelle unità reali; poi indica quello il cui ultimo ordine risale a più tempo fa. - Crea un grafico a dispersione per ogni segmento, etichettato con la sua lettera; aggiungi la legenda e mostra il grafico.
Per un altro negozio, taglia a 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 Ce il relativo grafico:
Poi Coddy descrive il tuo.
Provalo tu
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
# Una riga per ogni cliente del negozio di piante
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]
# L'altezza a cui il proprietario taglia l'albero del negozio, ricavata dal dendrogramma (3 o più segmenti)
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)")
# 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 consegna8Rilevamento delle anomalie
Individuare gli elementi anomaliIsolation ForestLocal Outlier FactorPunteggi di anomaliaRiepilogo: monitoraggio del server11Sfide finali
Segmenti di acquistiRilevamento delle frodi con carteAmmassi stellariDue tipi di celleEsercitati da solo: Compilatore Python online