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.
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.
Défi
DifficileLe programme lit où couper l’arbre ; le code de départ configure un graphique avec un titre.
- Mets les caractéristiques à l’échelle et coupe l’arbre de Ward à cet endroit. Affiche le nombre de segments obtenus.
- Affiche le score de silhouette du k-means (3 décimales) pour ce k et chacun de ses voisins, puis le meilleur k.
- 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. - 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 Cet son graphique :
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
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é
1Découvrir des groupes
Apprendre sans étiquettesMesurer la similaritéK-Means à la mainK-Means avec scikit-learnRécapitulatif : les membres de la salle de sport4Classification hiérarchique
Fusion étape par étapeModèles agglomératifsDendrogrammesRécapitulatif : races de chiens7L’ACP en pratique
Visualiser 64 dimensionsLes composantes comme motifsCompresser et reconstruireL’ACP avant un modèleRécapitulatif : scanner de visages10Projet : Explorateur de chiffres
Observer les chiffresRéduire avec la PCARegrouper les chiffresNommer les groupesRepérer les intrus2Choisir k
InertieLa méthode du coudeScores de silhouetteMettre à l’échelle avant le clusteringRécapitulatif : zones de livraison8Détection des anomalies
Repérer les éléments atypiquesForêt d’isolationFacteur local d’anomalieScores d’anomalieRécapitulatif : surveillance des serveurs11Défis finaux
Segments de coursesSurveillance des fraudes bancairesAmas d’étoilesDeux types de cellulesEntraînez-vous par vous-même : Compilateur Python en ligne