Menu
CoddyTech

Segmentos de compras

Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 48 de 51.

Una tienda de plantas en línea solo conoce a sus 240 clientes por lo que hacen: pedidos al año, tamaño de la cesta, proporción de compras en oferta y días desde el último pedido.

Los 240 clientes de la tienda de plantas como puntos grises, pedidos al año en el eje horizontal y cesta promedio en euros en el vertical, sin etiquetas: una banda densa en las cestas de menor importe y un pequeño grupo de alto gasto cerca de la parte superior izquierda

Nadie los ha etiquetado. La propietaria quiere unos cuantos segmentos que pueda describir con palabras sencillas y un correo electrónico para recuperar al que se alejó.

Haz que dos métodos coincidan en k: un árbol de ward lo sugiere y la silueta lo comprueba frente a sus vecinos. Después, lee cada segmento en unidades reales.

challenge icon

Desafío

Difícil

El programa lee dónde cortar el árbol; el código inicial configura un gráfico con título.

  1. Escala las características y corta un árbol de Ward ahí. Imprime cuántos segmentos produce.
  2. Imprime la silueta de k-means (3 decimales) para ese k y cada valor vecino, y luego el mejor k.
  3. Vuelve a ajustar con ese valor en plants["segment"]. Primero el más grande; asigna una letra a cada segmento e imprime sus medias en unidades reales; luego, el segmento cuya última compra sea la más antigua.
  4. Representa cada segmento con un diagrama de dispersión y etiquétalo con su letra; muestra la leyenda y el gráfico.

Para otra tienda, corta en 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

y su gráfico:

Segmentos de otra tienda titulados Plant Shop Segments: A, 70 clientes con 5 a 14 pedidos al año; B, 50 con pocos pedidos y cestas pequeñas; C, 30 con pocos pedidos y cestas grandes cerca de la parte superior, con una leyenda

Después, Coddy describe tu tienda.

Pruébalo tú mismo

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 fila por cada cliente de la tienda de plantas
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]

# La altura a la que el propietario corta el árbol de la tienda, determinada a partir de su dendrograma (3 o más segmentos)
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)")

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje no supervisado

Practica por tu cuenta: Compilador de Python online