Segments de clientèle
Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 39 sur 51.
Ce chapitre met les clusters à l’œuvre, jusqu’à créer une playlist classée par humeur :
D’abord, les segments : des groupes sur lesquels on peut agir. Une auberge de jeunesse a mis à l’échelle deux caractéristiques et regroupé ses clients en clusters :
Les unités réelles indiquent à quoi ressemble un segment. Son centre réduit montre ce qui le distingue : chaque caractéristique en écart-type par rapport au client moyen.
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))Cela affiche :
[[ 1.3 -0.7]
[-0.7 -0.7]
[-0.7 1.4]]Le nombre de chaque ligne le plus éloigné de 0 désigne son segment. La ligne 0 reste 1.3 écart-type de plus : les routards. La ligne 2 réserve 1.4 écart-type plus tôt : les voyages scolaires.
Défi
MoyenUn théâtre veut connaître ses 166 membres. Le programme lit les caractéristiques utilisées pour la segmentation, comme age,ticket_price.
- Standardise ces colonnes, regroupe-les en segments avec
best_k(X)à l’aide de la fonction auxiliaire fournie dans le code de départ, puis affiche leur nombre. - En commençant par le plus grand, affiche la taille et le nom de chaque segment : la caractéristique de son centre la plus éloignée de 0,
highoulow, et de combien.
Pour un autre théâtre et 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)Essayez vous-même
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# Une ligne par membre du théâtre
members = pd.read_csv("theatre.csv")
# Les caractéristiques à utiliser pour la segmentation, telles que age,ticket_price
features = input().split(",")
# À partir des scores de silhouette : le k de 2 à 6 offrant le meilleur score de silhouette pour 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
# É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 livraison3Interpréter les clusters
Caractériser les clustersCentres dans les unités réellesClusters et étiquettes connuesQuand K-Means échoueRécapitulatif : dégustation de thé6Moins de dimensions
Trop de caractéristiquesProjectionsPCAVariance expliquéeRécapitulatif : chants d’oiseaux9Les clusters en action
Segments de clientèleLes clusters comme caractéristiquesCouleurs des imagesRécapitulatif : ambiances des playlistsEntraînez-vous par vous-même : Compilateur Python en ligne