Pipeline de segmentación de clientes para una empresa de telecomunicaciones utilizando técnicas de aprendizaje no supervisado. El proyecto combina análisis RFM (Recency, Frequency, Monetary), múltiples algoritmos de clustering (K-Means, Hierarchical, DBSCAN), estimación simplificada de Customer Lifetime Value (CLV) y generación de estrategias de negocio diferenciadas por segmento.
Contexto de negocio: Comprender los distintos perfiles de clientes permite diseñar estrategias de retención, cross-selling y comunicación personalizadas, maximizando el valor de cada segmento y optimizando la asignación de recursos comerciales.
Se identificaron 4 segmentos diferenciados de clientes:
| Segmento | Clientes | % Total | CLV Promedio | Tenure Prom. | NPS Prom. |
|---|---|---|---|---|---|
| New/Low-Engagement | 4,130 | 82.6% | $532 | 25.5 meses | 6.4 |
| High-Value Active | 711 | 14.2% | $376 | 5.7 meses | 6.5 |
| At-Risk Dissatisfied | 159 | 3.2% | $330 | 1.4 meses | 6.3 |
| Método | Silhouette Score | Calinski-Harabasz |
|---|---|---|
| K-Means (K=4) | 0.2940 | 2,374.5 |
| Hierarchical (Ward) | 0.3773 | 2,251.8 |
customer-segmentation-ml/
├── data/
│ └── telecom_customers.csv # Dataset (5,000 clientes, 20 variables)
├── notebooks/
│ └── 01_customer_segmentation.py # Pipeline completo
├── src/
│ └── generate_data.py # Generador de datos sintéticos
├── figures/
│ ├── 01_distributions.png # Distribuciones de variables
│ ├── 02_correlation_matrix.png # Matriz de correlación
│ ├── 03_contract_analysis.png # Análisis por contrato
│ ├── 04_rfm_analysis.png # Análisis RFM
│ ├── 05_optimal_k.png # Determinación de K óptimo
│ ├── 06_cluster_visualization.png # PCA y t-SNE
│ ├── 07_radar_profiles.png # Perfiles radar
│ ├── 08_segment_boxplots.png # Boxplots por segmento
│ ├── 09_dendrogram.png # Dendrograma jerárquico
│ └── 10_clv_analysis.png # Análisis CLV
├── reports/
│ ├── cluster_summary.csv # Resumen de clusters
│ ├── cluster_profiles_detailed.csv # Perfiles detallados
│ ├── clv_by_segment.csv # CLV por segmento
│ ├── business_strategies.csv # Estrategias de negocio
│ └── customers_segmented.csv # Dataset enriquecido
├── requirements.txt
├── LICENSE
└── README.md
- Generación de Datos: Dataset sintético de 5,000 clientes con 20 variables (demográficas, uso, facturación, satisfacción).
- EDA: Análisis de distribuciones, correlaciones y patrones por tipo de contrato.
- Análisis RFM: Scoring de Recency, Frequency y Monetary adaptado al contexto telecom.
- Feature Engineering: Selección de 11 variables clave para clustering.
- Determinación de K: Método del codo, Silhouette, Calinski-Harabasz y Davies-Bouldin.
- Clustering: K-Means con K=4, comparación con Hierarchical Clustering.
- Perfilamiento: Caracterización de cada segmento con estadísticas y visualizaciones.
- CLV Estimation: Cálculo simplificado de Customer Lifetime Value por segmento.
- Estrategias de Negocio: Recomendaciones accionables diferenciadas por segmento.
| Segmento | Estrategia Principal | KPIs Objetivo |
|---|---|---|
| High-Value Active | Programa VIP, cross-selling premium | Retención > 95%, ARPU creciente |
| Loyal Satisfied | Fidelización, referral programs | Retención > 90%, referidos > 2/año |
| At-Risk Dissatisfied | Intervención proactiva, descuentos | Reducción churn > 20%, NPS +2 |
| New/Low-Engagement | Onboarding personalizado | Engagement > 0.4 en 3 meses |
- Python 3.11 — Lenguaje principal
- pandas / NumPy — Manipulación de datos
- scikit-learn — Clustering (K-Means, Hierarchical, DBSCAN), PCA, t-SNE
- SciPy — Dendrogramas y linkage jerárquico
- matplotlib / seaborn — Visualización de datos
# Clonar repositorio
git clone https://github.com/<tu-usuario>/customer-segmentation-ml.git
cd customer-segmentation-ml
# Instalar dependencias
pip install -r requirements.txt
# Generar datos (opcional, ya incluido)
python src/generate_data.py
# Ejecutar pipeline completo
python notebooks/01_customer_segmentation.pyEste proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.




