Menu
CoddyTech

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 :

80 chansons représentées par des points, la valence en abscisse et l’énergie en ordonnée, réparties en quatre groupes trouvés et nommés par k-means : tendu en haut à gauche, joyeux en haut à droite, triste en bas à gauche, calme en bas à droite

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 :

150 clients d’une auberge de jeunesse, nombre de nuits par séjour en abscisse et nombre de jours à l’avance pour la réservation en ordonnée, répartis en trois segments : voyages scolaires réservés des mois à l’avance, voyageurs du week-end avec des séjours courts, routards avec de longs séjours réservés tardivement

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.

challenge icon

Défi

Moyen

Un théâtre veut connaître ses 166 membres. Le programme lit les caractéristiques utilisées pour la segmentation, comme age,ticket_price.

  1. 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.
  2. 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, high ou low, 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
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