Segmentos de clientes
Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 39 de 51.
Neste capítulo, você vai colocar os agrupamentos em prática, até chegar a uma playlist organizada por humor:
Primeiro, segmentos: grupos sobre os quais as pessoas podem agir. Um hostel escalou duas características e agrupou seus hóspedes:
As unidades reais dizem como é um segmento. Seu centro padronizado mostra o que o diferencia: cada característica em desvios padrão em relação à média dos hóspedes.
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))Isso imprime:
[[ 1.3 -0.7]
[-0.7 -0.7]
[-0.7 1.4]]O número de cada linha mais distante de 0 identifica seu segmento. A linha 0 fica 1.3 desvios padrão a mais: mochileiros. A linha 2 reserva 1.4 desvios padrão antes: viagens escolares.
Desafio
MédioUm teatro quer conhecer seus 166 membros. O programa lê as características usadas para segmentar, como age,ticket_price.
- Escale essas colunas, agrupe em
best_k(X)segmentos com a função auxiliar fornecida no código inicial e imprima quantos são. - Do maior para o menor, imprima o tamanho e o nome de cada segmento: a característica do centro mais distante de 0,
highoulow, e a distância.
Para outro teatro e 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)Experimente você mesmo
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# Uma linha para cada membro do teatro
members = pd.read_csv("theatre.csv")
# As características usadas para a segmentação, como age,ticket_price
features = input().split(",")
# Com base nos Silhouette Scores: o k de 2 a 6 com a melhor silhueta para 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
# Escreva seu código abaixo
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
1Encontrando Grupos
Aprendendo sem RótulosMedindo a SimilaridadeK-Means à MãoK-Means no scikit-learnRevisão: Frequentadores da Academia4Clustering Hierárquico
Mesclando passo a passoModelos aglomerativosDendrogramasRevisão: raças de cães7PCA na prática
Visualizando 64 dimensõesComponentes como padrõesComprimir e reconstruirPCA antes de um modeloRecapitulação: scanner facial10Projeto: Explorando os Dígitos
Observe os DígitosReduza com PCAAgrupe os DígitosDê Nome aos GruposEncontre os Diferentes2Escolhendo k
InérciaO método do cotoveloPontuações de silhuetaEscale antes de agruparRecapitulando: zonas de entrega3Interpretando agrupamentos
Caracterizando agrupamentosCentros em unidades reaisAgrupamentos versus rótulos conhecidosQuando o K-Means falhaRevisão: degustação de chá9Agrupamentos em ação
Segmentos de clientesAgrupamentos como característicasCores em imagensRevisão: humores de playlistsPratique por conta própria: Compilador de Python online