Voltar aos Projetos
Python Pandas Scikit-learn K-Means Machine Learning

Clusterização de Clientes para Estratégias de Retenção e Engajamento

Segmentação não supervisionada de uma base com mais de 45 mil registros utilizando K-Means, identificando 3 perfis distintos de clientes e propondo ações estratégicas de marketing, retenção e vendas para cada segmento.

Clusterização de Clientes

Contexto

Este projeto foi desenvolvido como avaliação obrigatória da pós-graduação em Data Analytics e Inteligência Artificial Aplicada a Negócios, realizado de forma individual e autônoma, consultando apenas o material estudado durante o curso e um case prático desenvolvido anteriormente.

O cenário aborda uma empresa que precisava entender melhor o comportamento de seus clientes para direcionar ações de retenção, engajamento e vendas de forma personalizada. A base de dados continha 45.815 registros com informações transacionais, comportamentais e de pagamento.

O Desafio

O projeto buscou responder às seguintes perguntas de negócio:

  1. Quantos grupos distintos de clientes existem na base? Qual critério foi usado para essa escolha?
  2. Qual é o perfil de cada grupo? (acessos, inatividade, forma de pagamento, recorrência, parcelamento)
  3. Existe algum grupo que se destaca positivamente? E negativamente? Por quê?
  4. Existem clientes com plano recorrente que não acessam a plataforma? Qual o tamanho desse grupo?
  5. Que ações de marketing, retenção ou vendas a empresa deveria adotar para cada grupo?
  6. Se um novo cliente se cadastrar amanhã, como classificá-lo automaticamente em um dos grupos?

Features Utilizadas

Foram selecionadas 7 variáveis divididas em dois eixos para a clusterização:

FeatureEixoDescrição
n_acessosComportamentoQuantidade de acessos do cliente à plataforma
Dias sem AcessarComportamentoDias de inatividade desde o último acesso
ativo_tratadoComportamentoStatus de atividade do cliente (binário)
TOTAL_PARCELASFinanceiroNúmero total de parcelas contratadas
RECORRENTEFinanceiroIndica se o pagamento é recorrente (assinatura)
Tipo PagamentoFinanceiroForma de pagamento utilizada (codificado)
RENOVACAOFinanceiroIndica se o cliente renovou a assinatura

Metodologia

1. Importação e Exploração

Importação da base com 45.815 registros e 28 colunas, tratamento de variáveis categóricas (ativo → binário) e exploração inicial dos dados.

2. Seleção de Features

Seleção de 7 variáveis-chave divididas em dois eixos: comportamental (acessos, inatividade, status ativo) e financeiro (parcelas, recorrência, pagamento, renovação).

3. Pré-processamento

Padronização dos dados com StandardScaler para eliminar diferenças de escala e garantir que nenhuma feature domine a clusterização.

4. Método Elbow

Avaliação da inércia (WCSS) para K de 1 a 9, identificando K=3 como o ponto de maior inflexão da curva, indicando o número ideal de clusters.

5. K-Means (K=3)

Treinamento do modelo K-Means com 3 clusters e random_state=42, atribuindo cada cliente a um dos segmentos identificados.

6. Análise de Perfis

Análise agregada por cluster com estatísticas descritivas (média, mediana) das features e identificação de formas de pagamento predominantes.

Resultados em Números

45.815 Registros de clientes analisados na base
3 Segmentos distintos identificados via K-Means
8.025 Clientes recorrentes inativos detectados
99,85% Taxa de renovação do cluster de clientes leais
0% Renovação no cluster de risco — alto churn
7 Features selecionadas (comportamentais + financeiras)

Perfis dos Clusters

Cluster 0

Compradores Pontuais de Baixo Engajamento

Clientes que realizam compras pontuais, geralmente em uma única parcela via cartão de crédito. Apresentam baixo número de acessos e inatividade média considerável, com taxa de recorrência e renovação praticamente nula.

83,83% Ativos
~0% Recorrência
~0% Renovação
Baixo Engajamento
Cluster 1

Assinantes em Risco de Churn

Clientes 100% recorrentes com pagamentos contínuos (frequentemente 12x), mas com acessos moderados e alta inatividade. Taxa de renovação de 0% e apenas 57,64% ativos — alto risco de abandono ao final do ciclo.

57,64% Ativos
100% Recorrência
0% Renovação
Alto Risco Churn
Cluster 2

Clientes Leais e Engajados

O grupo mais valioso. Alto engajamento com a plataforma (média de 36,36 acessos), taxa de renovação quase perfeita (99,85%) e 100% ativos. São clientes extremamente satisfeitos e leais, ideais para programas de indicação.

100% Ativos
35,89% Recorrência
99,85% Renovação
36,36 Acessos (média)

Ações Estratégicas Recomendadas

Cluster 0 Fidelização

  • Marketing: Campanhas de Upsell para migração a planos recorrentes ou assinaturas contínuas.
  • Vendas: Cupons de desconto progressivo para incentivar a segunda compra e criar hábito de consumo.
  • Retenção: Trilhas de "Boas-vindas" agressivas via e-mail/WhatsApp com conteúdos de valor para aumentar acessos.

Cluster 1 Recuperação Urgente

  • Retenção (Urgente): Campanhas de Win-back com pesquisas de satisfação (NPS) para entender o desengajamento antes da expiração.
  • Marketing: Reengajamento baseado em conteúdo — notificações sobre novidades da plataforma para reativar o login.
  • Vendas: Ofertas de renovação antecipada com bônus ou descontos exclusivos para evitar abandono.

Cluster 2 Expansão de Valor

  • Marketing: Programas de Indicação (Member get Member) — os melhores defensores da marca.
  • Vendas: Cross-sell com produtos de ticket mais alto (Mentorias, Masterminds, eventos presenciais).
  • Retenção: Comunidade VIP e acesso antecipado a novos recursos para manter exclusividade e alto nível de atividade.

Automação: Classificação de Novos Clientes

Para garantir a escalabilidade da solução, foi desenvolvido um pipeline de pré-processamento que permite classificar automaticamente novos clientes nos clusters existentes, utilizando o modelo K-Means e o Scaler exportados via joblib.

preprocessamento.py
import joblib
import pandas as pd
import numpy as np

def novos_clientes(base):
    colunas_cluster = ['Tipo Pagamento', 'TOTAL_PARCELAS', 'RECORRENTE',
                       'n_acessos', 'Dias sem Acessar', 'ativo_tratado',
                       'RENOVACAO']
    modelo_kmeans_treinado = joblib.load('modelo_kmeans_treinado.pkl')
    scaler_treinado = joblib.load('scaler_clientes.pkl')
    novos_clientes_df = pd.read_excel(base)
    novos_clientes_df['ativo_tratado'] = np.where(
        novos_clientes_df['ativo'] == 'sim', 1, 0
    )
    features_novos_clientes = novos_clientes_df[colunas_cluster]
    novos_clientes_scaled = scaler_treinado.transform(features_novos_clientes)
    novos_clientes_df['Cluster'] = modelo_kmeans_treinado.predict(
        novos_clientes_scaled
    )
    novos_clientes_df.to_excel(base, index=False)
    return novos_clientes_df

Com esta função, basta importar novos_clientes(), passar o caminho de um arquivo Excel com a base de novos clientes e o modelo atribui automaticamente cada um ao cluster mais adequado.

Tecnologias Utilizadas

Python Pandas NumPy Scikit-learn Matplotlib Joblib Excel / Openpyxl