Este projeto constrói um pipeline de machine learning para prever o churn de clientes em uma empresa de telecomunicações. O objetivo é identificar clientes com maior probabilidade de cancelar o serviço, permitindo que o negócio tome ações preventivas antes que o cancelamento ocorra.
O churn de clientes impacta diretamente a receita de empresas com modelo de assinatura, como telecomunicações, SaaS e streaming. Ao treinar um modelo de classificação com dados históricos de clientes, é possível sinalizar os perfis de maior risco e priorizar ações de retenção de forma proativa.
O projeto utiliza o dataset IBM Telco Customer Churn, uma base pública com 7.043 registros de clientes e 21 variáveis, incluindo tipo de contrato, cobranças mensais, tempo de relacionamento e uso de serviços. A variável alvo é Churn (Sim / Não).
Fonte: IBM Telco Customer Churn no GitHub
- Carregamento e inspeção inicial dos dados
- Análise Exploratória de Dados (EDA)
- Limpeza e correção de tipos
- Engenharia de atributos
- Codificação de variáveis categóricas
- Divisão treino e teste (80/20)
- Padronização com StandardScaler
- Modelo baseline (DummyClassifier)
- Treinamento e avaliação com Regressão Logística
- Treinamento e avaliação com Random Forest
- Comparação entre modelos
- Curva ROC
- Análise de importância das variáveis
- Exportação do modelo para deploy
| Modelo | Descrição |
|---|---|
| DummyClassifier | Prevê sempre a classe majoritária; usado como baseline de desempenho |
| Regressão Logística | Classificador linear, interpretável e de baixo custo computacional |
| Random Forest | Ensemble de 300 árvores de decisão |
Cada modelo é avaliado com acurácia, relatório de classificação (precisão, recall e F1-score), matriz de confusão e curva ROC-AUC.
Dois novos atributos foram criados a partir dos dados existentes:
AvgCharges: valor médio pago por mês, calculado a partir do total cobrado e do tempo de relacionamentoNewCustomer: flag binária que identifica clientes com menos de 12 meses de contrato
O modelo de Regressão Logística treinado, o StandardScaler e os LabelEncoders são exportados como arquivos .pkl via joblib. Esses arquivos são destinados ao uso em uma aplicação Streamlit.
churn_model.pkl
scaler.pkl
encoders.pkl
Caso queira partir para testar diretamente o este classificador, foi desenvolvido uma interface web com Streamlit que, receberá os atributos através de um formulário, fará o preprocessamento com os modelos já treinados anteriormente e exibirá a previsão de Churn com sua probabilidade.
- Python 3
- pandas
- numpy
- scikit-learn
- matplotlib
- seaborn
- joblib
- streamlit
- Clone este repositório
- Crie um ambiente virtual
- Instale as dependências:
uv sync - Abra os notebooks em sua IDE de preferência e execute todas as células em ordem
- Caso queira ir diretamente para aplicação web, após
uv syncexecute no terminal:A aplicação estará disponível em: http://localhost:8501uv run streamlit run main.py
Desenvolvido por, Wellington M. Santos - Cientista de Dados, como projeto de portfólio com foco em machine learning aplicado a um problema real de negócio.
- Linkedin: in/wellington-moreira-santos
- Email: wsantos08@hotmail.com
