# Senegal Rental Price
Service de prédiction du prix de location d'un bien immobilier au Sénégal
(Dakar, Thiès, Saint-Louis, Mbour, Saly), de l'entraînement du modèle jusqu'à
son exposition via une API REST, packagée et déployable avec Docker.
> Projet M2 DSIA — Babou Gaye & Mouhamed Diouf
## Sommaire
- Installation
- Générer les données
- Entraîner un modèle
- Lancer l'API
- Lancer le front
- Lancer les tests
- Tout lancer avec Docker
- Structure du projet
## Installation
Prérequis : Python 3.11+.
```bash
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pre-commit install
```
## Générer les données
Le jeu de données est synthétique (voir `data/README.md` pour la méthodologie).
```bash
python -m senegal_rental_price.data.generate_synthetic_data \
--n-rows 4000 --seed 42 --output data/raw/locations_senegal.csv
```
## Entraîner un modèle
L'entraînement est configuré avec Hydra — aucun paramètre
n'est codé en dur. Le tracking des runs se fait avec MLflow.
```bash
# Modèle par défaut (random_forest)
python -m senegal_rental_price.models.train
# Changer de modèle et d'hyperparamètres en ligne de commande
python -m senegal_rental_price.models.train model=xgboost model.params.max_depth=8
python -m senegal_rental_price.models.train model=ridge
# Visualiser les runs (backend par défaut : sqlite local)
mlflow ui --backend-store-uri sqlite:///mlflow.db
```
> ⚠️ **Deux backends MLflow distincts et indépendants coexistent dans ce
> projet :**
> - Par défaut (`conf/config.yaml`), l'entraînement écrit dans
> `sqlite:///mlflow.db`, un fichier local à la racine du projet. C'est ce
> backend qu'il faut consulter avec la commande `mlflow ui` ci-dessus.
> - Le service `mlflow` de `docker-compose.yml` (section
> Tout lancer avec Docker) démarre un serveur
> **séparé**, avec son propre stockage dans `mlflow_data/` (vide au premier
> lancement). Il ne contient **pas** automatiquement les runs entraînés en
> local. Pour l'utiliser, démar …