This project presents an end-to-end machine learning pipeline to predict customer churn for Expresso, a telecommunications company in Senegal.
# Customer Churn Prediction for Expresso Telecom
---
## Project Overview
This project presents an end-to-end machine learning pipeline to predict customer churn for Expresso, a telecommunications company in Senegal.
The goal is to identify customers who are likely to churn, enabling the business to take proactive retention actions.
The workflow includes:
- Data preprocessing
- Exploratory Data Analysis (EDA)
- Handling severe class imbalance
- Training a Decision Tree classifier
- Deploying predictions through a Streamlit dashboard
The model achieved **99.94% accuracy** on the balanced test set after oversampling the minority class.
---
## Table of Contents
- Project Overview
- Dataset
- Workflow
- Data Loading & Initial Inspection
- Data Preprocessing
- Exploratory Data Analysis (EDA)
- Feature Engineering & Encoding
- Handling Class Imbalance
- Model Training & Evaluation
- Model Serialization
- Streamlit Dashboard
- Installation & Usage
- Results
- Future Improvements
---
## Dataset
The dataset (`Expresso_churn_dataset.csv`) contains **2,154,048 rows** and **19 columns** from the Expresso Churn Prediction challenge.
After removing missing values and irrelevant columns, **10,839 records** remained for modeling.
### Key Features
| Feature | Description |
|---|---|
| `TENURE` | Customer loyalty period |
| `MONTANT` | Top-up amount |
| `REVENUE` | Total customer revenue |
| `FREQUENCE_RECH` | Frequency of recharge |
| `DATA_VOLUME` | Data volume consumed |
| `ON_NET` / `ORANGE` | On-net and off-net calls |
| `REGION` | Customer geographic region |
| `MRG` | Migration flag |
| `TOP_PACK` | Most used telecom package |
### Target Variable
```python
CHURN
```
- `1` = churned
- `0` = not churned
---
## Workflow
The complete pipeline is implemented in a Jupyter Notebook.
---
## 1. Data Loading & Initial Inspection
### Steps Performed
- Load dataset using `pandas`
- Inspect:
- Data types
- Missing values
- Dataset dimensions
- Memory usage
- D …