Pipeline End-to-End de Data Science pour identifier et scorer les segments de population non bancarisés à fort potentiel Mobile Money en Afrique de l'Est (Kenya, Rwanda, Tanzanie, Ouganda).
# Qui reste hors du système bancaire — Profilage de l'exclusion financière en Afrique de l'Est et opportunité mobile money
## Problème métier
Orange Money cherche à cibler en priorité les populations exclues du
système bancaire traditionnel pour son offre mobile money. Ce projet
répond à une question business simple : **quels segments de population
non bancarisée cibler en priorité pour l'acquisition, et quel est leur
volume ?**, en s'appuyant sur les données du Kenya, du Rwanda, de la
Tanzanie et de l'Ouganda.
## Données et source
- Dataset : *Financial Inclusion in Africa* (~23 500 individus, 4 pays
d'Afrique de l'Est).
- Fichier utilisé : `data/raw/Train.csv`.
- Cible : `bank_account` (Yes/No) — classes déséquilibrées (~14% de "Yes").
- Colonnes : `country`, `year`, `uniqueid`, `bank_account`,
`location_type`, `cellphone_access`, `household_size`,
`age_of_respondent`, `gender_of_respondent`, `relationship_with_head`,
`marital_status`, `education_level`, `job_type`.
## Méthode
1. **`01_eda.py`** — audit qualité (manquants, doublons, cardinalité,
valeurs aberrantes) et premiers constats métier chiffrés.
2. **`02_preprocessing.py`** — split stratifié 80/20 **avant** tout calcul
de statistique (zéro fuite de données), feature engineering
(tranches d'âge, flag foyer nombreux) et définition du
`ColumnTransformer` (StandardScaler + OneHotEncoder) réutilisé par les
Pipelines de modélisation.
3. **`03_train_models.py`** — DummyClassifier en baseline puis 6 modèles
(LogisticRegression, DecisionTree, RandomForest, GradientBoosting,
KNeighbors, GaussianNB), tous encapsulés dans un `Pipeline`,
`class_weight='balanced'` quand disponible, `GridSearchCV` +
`StratifiedKFold(5)` avec `scoring='average_precision'`. Sélection du
meilleur modèle sur la PR-AUC (métrique adaptée aux classes
déséquilibrées, contrairement à l'accuracy).
4. **`04_segments_ciblage.py`** (script central) — inverse la cible pour
repérer les **non-bancarisés à fort potentiel mobile money** : croisement …