Este proyecto busca predecir el churn de clientes en el último mes de un dataset de telecomunicaciones, aplicando técnicas de Machine Learning para identificar aquellos usuarios que probablemente abandonen el servicio.
TELCO_CHURN_PROJECT/
│
├── data/
│ ├── raw/ # Datos originales sin procesar
│ └── processed/ # Datos limpios y transformados
│
├── notebooks/
│ ├── EDA_notebook.ipynb # Análisis exploratorio de datos
│ └── Modeling_notebook.ipynb # Entrenamiento de modelos y evaluación
│
├── src/
│ ├── preprocessing.py # Funciones para limpieza y preparación
│ ├── feature_engineering.py # Generación de nuevas variables
│ └── pycache/ # Archivos cacheados
│
├── README.md # Documentación general del proyecto
├── requirements.txt # Librerías necesarias
├── respuestas.txt # Respuestas técnicas al desafío
└── prueba tecnica.pdf # Documento original del caso práctico
- Preprocesamiento: Escalado, imputación y depuración del dataset.
- Feature Engineering: Creación de variables relevantes para capturar el comportamiento del cliente.
- Selección de Variables: Aplicación de BorutaShap con XGBoost para identificar las características más explicativas.
- Modelado: Se entrenaron tres modelos:
Logistic RegressionRandom ForestXGBoost
- Evaluación: Optimización de hiperparámetros vía
RandomizedSearchCVcon validación cruzada estratificada (StratifiedKFold).
Se priorizó el Recall como métrica principal, buscando detectar la mayor cantidad de churns. También se evaluó:
PrecisionF1 ScoreROC AUCAverage Precision (PR AUC)Classification Report- Visualizaciones: matriz de confusión, curvas ROC y Precision-Recall, distribución de probabilidades.
Logistic Regression mostró el mejor desempeño en términos de recall, siendo ideal para capturar churns reales.
Random Forest tuvo mejor calibración y discriminación (mayor ROC AUC y PR AUC), siendo útil si se busca un balance entre detección y precisión.
Instalación de dependencias:
pip install -r requirements.txt- Asegúrate de tener los datos en data/raw/.
- Corre EDA_notebook.ipynb para análisis exploratorio.
- Ejecuta Modeling_notebook.ipynb para entrenar modelos y generar evaluaciones.
Desarrollado por Enzo Infantes:
- 📧 Email: enzo.infantes28@gmail.com
- 🔗 LinkedIn: enzo-infantes