Menu
CoddyTech

Segments de courses

Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 48 sur 51.

Une boutique de plantes en ligne ne connaît ses 240 clients qu’à travers leurs comportements : commandes par an, montant du panier, part des achats effectués en promotion et nombre de jours depuis la dernière commande.

Les 240 clients de la boutique de plantes représentés par des points gris, avec les commandes par an en abscisse et le panier moyen en euros en ordonnée, sans étiquettes : une bande dense pour les petits paniers et un petit groupe dépensant beaucoup près du coin supérieur gauche

Personne ne les a étiquetés. La propriétaire souhaite quelques segments qu’elle puisse décrire en termes simples, ainsi qu’un courriel de reconquête pour celui qui s’est éloigné.

Fais en sorte que deux méthodes s’accordent sur k : un arbre Ward le suggère, et le silhouette le vérifie par rapport à ses voisins. Lis ensuite chaque segment en unités réelles.

challenge icon

Défi

Difficile

Le programme lit où couper l’arbre ; le code de départ configure un graphique avec un titre.

  1. Mets les caractéristiques à l’échelle et coupe l’arbre de Ward à cet endroit. Affiche le nombre de segments obtenus.
  2. Affiche le score de silhouette du k-means (3 décimales) pour ce k et chacun de ses voisins, puis le meilleur k.
  3. Réentraîne le modèle avec cette valeur et ajoute les résultats dans plants["segment"]. En commençant par le plus grand, attribue une lettre à chaque segment et affiche ses moyennes dans les unités réelles ; puis indique celui dont la dernière commande est la plus ancienne.
  4. Représente chaque segment par un nuage de points et étiquette-le avec sa lettre ; ajoute la légende et affiche le graphique.

Pour une autre boutique, coupe à 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

et son graphique :

Segments d’une autre boutique intitulés Plant Shop Segments : A, 70 clients avec 5 à 14 commandes par an, B, 50 avec peu de commandes et de petits paniers, C, 30 avec peu de commandes et de grands paniers vers le haut, avec une légende

Ensuite, Coddy décrit le tien.

Essayez vous-même

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

# Une ligne par client de la jardinerie
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]

# La hauteur à laquelle le propriétaire coupe l’arbre de la jardinerie, lue sur son dendrogramme (3 segments ou plus)
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)")

# Écrivez votre code ci-dessous
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Apprentissage non supervisé

Entraînez-vous par vous-même : Compilateur Python en ligne