Menu
CoddyTech

Segmentos de compras

Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 48 de 51.

Uma loja de plantas on-line conhece seus 240 clientes apenas pelo que eles fazem: pedidos por ano, valor do carrinho, proporção de compras em promoção e dias desde o último pedido.

Os 240 clientes da loja de plantas' como pontos cinza, pedidos por ano no eixo horizontal e valor médio do carrinho em euros no eixo vertical, sem rótulos: uma faixa densa com valores baixos de carrinho e um pequeno grupo de alto gasto perto do canto superior esquerdo

Ninguém os rotulou. A proprietária quer alguns segmentos que possa descrever com palavras simples e um e-mail de reconquista para aquele que se afastou.

Faça dois métodos concordarem em k: uma árvore de ward sugere esse valor, e o silhouette o confere em relação aos seus vizinhos. Depois, leia cada segmento em unidades reais.

challenge icon

Desafio

Difícil

O programa lê onde cortar a árvore; o código inicial configura um gráfico com título.

  1. Escale as características e corte uma árvore de Ward nesse ponto. Imprima quantos segmentos ela gera.
  2. Imprima a silhueta do k-means (3 casas decimais) para esse k e cada valor vizinho, depois o melhor k.
  3. Ajuste novamente com ele em plants["segment"]. Do maior para o menor, atribua uma letra a cada segmento e imprima suas médias em unidades reais; depois, o segmento cujo último pedido é o mais antigo.
  4. Faça um gráfico de dispersão de cada segmento, identificado por sua letra; adicione a legenda e exiba o gráfico.

Para outra loja, corte em 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

e o gráfico dela:

Segmentos de outra loja, intitulados Segmentos da loja de plantas: A, 70 clientes com 5 a 14 pedidos por ano; B, 50 com poucos pedidos e cestas pequenas; C, 30 com poucos pedidos e cestas grandes na parte superior, com uma legenda

Então, Coddy descreve a sua.

Experimente você mesmo

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

# Uma linha por cliente da loja de plantas
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]

# A altura em que a proprietária corta a árvore da loja, obtida a partir do dendrograma (3 ou mais 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)")

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Aprendizado não supervisionado

Pratique por conta própria: Compilador de Python online