Este projeto implementa uma solução completa de Machine Learning para prever a evasão de clientes (Churn). O objetivo é transformar dados brutos em insights acionáveis através de um modelo preditivo robusto.
Destaques Técnicos: Pipeline Completo: Desde a análise exploratória (EDA) até o deploy.
API de Produção: Implementação de uma API REST pronta para integração com sistemas externos.
Dataset: Telco Customer Churn (Kaggle).
Diferencial: Vai além de modelos executados em notebooks. Este projeto entrega uma solução de Machine Learning pronta para produção, exposta via API e projetada para escalar, refletindo um cenário real de engenharia de Machine Learning.
O modelo analisa o perfil do cliente (tipo de contrato, serviços assinados, cobranças e tempo de casa) e retorna a probabilidade dele abandonar o serviço. Isso permite que empresas de SaaS ou Telecom tomem medidas preventivas.
- Pipeline Automatizado: O modelo utiliza um
churn_pipeline.pklque encapsula o pré-processamento e o algoritmo, garantindo consistência nos dados. - Performance: API com FastAPI.
- Gestão de Ciclo de Vida: Uso de
lifespando FastAPI para carregamento eficiente do modelo em memória. - Segurança de Tipos: Validação de dados de entrada via Pydantic.
- Linguagem: Python
- Modelagem: Scikit-Learn / Pandas
- API: FastAPI / Uvicorn
- Serialização: Joblib
O projeto está organizado seguindo as boas práticas de engenharia de dados:
api/: Contém omain.pycom a API desenvolvida em FastAPI.src/data/: Separação entre dados brutos (raw) e dados limpos (processed).src/features/: Scripts para engenharia de atributos.src/models/: Scripts de treinamento e o artefato final do modelo (churn_pipeline.pkl).src/reports/figures/: Visualizações geradas, incluindo o SHAP Summary Plot.src/visualization/: Scripts dedicados à geração de gráficos e análise visual.
Instale as dependências:
pip install -r requirements.txt
uvicorn api.main:app --reload
Acesse a Documentação: Acesse http://127.0.0.1:8000/docs para testar a API via Swagger UI.
Para testar a predição, envie um POST para /predict com o seguinte formato:
{
"gender": "Female",
"SeniorCitizen": 0,
"Partner": "Yes",
"Dependents": "No",
"tenure": 12,
"PhoneService": "Yes",
"MultipleLines": "No",
"InternetService": "Fiber optic",
"OnlineSecurity": "No",
"OnlineBackup": "Yes",
"DeviceProtection": "No",
"TechSupport": "No",
"StreamingTV": "Yes",
"StreamingMovies": "Yes",
"Contract": "Month-to-month",
"PaperlessBilling": "Yes",
"PaymentMethod": "Electronic check",
"MonthlyCharges": 85.5,
"TotalCharges": 1024.3
}
[Incluído] Implementar explicabilidade local com SHAP no retorno da API.
[Incluído] Criar imagem Docker para deploy escalável.
[Incluído] Implementar monitoramento de métricas do modelo (ML Model Monitoring).
Desenvolvido por: Davis Denner Costa Silva
LinkedIn: davis-denner-costa-silva
GitHub: Davisdenner