Menu
CoddyTech

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.

I 240 clienti del negozio di piante rappresentati da punti grigi, con gli ordini all’anno sull’asse orizzontale e il valore medio del carrello in euro su quello verticale, senza etichette: una fascia densa con carrelli di valore basso e un piccolo gruppo con spese elevate vicino all’angolo in alto a sinistra

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.

challenge icon

Sfida

Difficile

Il programma legge il punto in cui tagliare l’albero; il codice iniziale prepara un grafico con un titolo.

  1. Scala le caratteristiche e taglia lì un albero ward. Stampa quanti segmenti crea.
  2. Stampa il coefficiente silhouette di k-means (3 decimali) per quel k e per ciascun valore adiacente, poi il k migliore.
  3. 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.
  4. 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 C

e il relativo grafico:

Segmenti di un altro negozio, intitolati Plant Shop Segments: A, 70 clienti con da 5 a 14 ordini all’anno; B, 50 con pochi ordini e panieri piccoli; C, 30 con pochi ordini e panieri grandi nella parte superiore, con una legenda

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
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento non supervisionato

Esercitati da solo: Compilatore Python online