Skip to content

Prédicteur de congestion routière utilisant RandomForest sur données synthétiques. Classification multi-classes (faible/moyen/élevé) avec interface web.

Notifications You must be signed in to change notification settings

Nano-a/traffic-flow-predictor

Repository files navigation

🚦 Traffic Flow Predictor – Prédicteur de Flux de Trafic Routier

Projet universitaire développé par Abderrahman AJINOU (Université Paris Cité, N° Étudiant : 22116322)


🤖 Pourquoi ce projet est-il un vrai projet d'intelligence artificielle ?

Ce projet n'est pas un simple formulaire ou site web : il s'agit d'une application d'intelligence artificielle appliquée à la mobilité urbaine. Voici pourquoi :

  • Utilisation du machine learning : le cœur du projet repose sur un modèle d'apprentissage automatique (RandomForest) pour prédire le niveau de congestion routière.
  • Données synthétiques réalistes : le modèle s'entraîne sur des données générées simulant des conditions réelles (heure, jour, météo, volume).
  • Prétraitement et évaluation : le code inclut l'encodage, la préparation des features, et le calcul de métriques (accuracy, importance des variables).
  • Interface interactive : l'utilisateur saisit les conditions de trafic et obtient une prédiction en temps réel, avec visualisations et statistiques.
  • Respect des standards IA : le projet suit les bonnes pratiques du machine learning (prétraitement, modularité, visualisation, évaluation).

En résumé : ce prédicteur est un vrai projet d'IA (machine learning appliqué à la mobilité), et non un simple projet d'algorithmique ou d'interface. Il peut être présenté comme tel dans un contexte académique ou professionnel.


🚀 Présentation

Traffic Flow Predictor est une application web qui prédit le niveau de congestion routière (faible, moyen, élevé) à partir de conditions saisies par l'utilisateur. Le projet est développé en Python 3.10 avec Flask pour l’interface web, et propose un design moderne et pédagogique.


🖼️ Galerie du Projet

Interface Utilisateur

Page d'accueil - Formulaire de trafic Résultats de prédiction

Visualisation et Statistiques

Statistiques et visualisation

Captures d'écran montrant les différentes facettes du système de prédiction et d'analyse du trafic


🗂️ Structure du projet

Traffic Flow Predictor/
├── app.py                  # Point d'entrée Flask
├── requirements.txt        # Dépendances Python
├── model/
│   └── traffic_model.py    # Logique IA (RandomForest, prétraitement, évaluation)
├── controller/
│   └── routes.py           # Routes Flask (MVC)
├── templates/
│   ├── index.html          # Page principale (formulaire, résultats dynamiques)
│   ├── results.html        # Page de résultats
│   ├── stats.html          # Statistiques et visualisations
│   ├── error.html          # Gestion des erreurs
│   └── base.html           # Template de base
├── static/
│   ├── css/
│   │   └── style.css       # Styles personnalisés
│   └── images/             # Images, icônes, visualisations (à compléter)
├── visualizations/         # (optionnel) Scripts ou images de visualisation
├── data/                   # (optionnel) Jeux de données ou base SQLite
├── tests/
│   └── test_traffic.py     # Tests unitaires
├── devbook.md              # Suivi du développement (étapes, TODO)
├── .github/
│   └── workflows/ci-cd.yml # CI/CD GitHub Actions
└── venv310/                # Environnement virtuel Python (à ignorer)

🛠️ Installation et environnement

1. Via pyenv + venv (recommandé)

# Installer pyenv si besoin : https://github.com/pyenv/pyenv
pyenv install 3.10.14
pyenv global 3.10.14
python -m venv venv310
source venv310/bin/activate
pip install -r requirements.txt

2. Via venv (si Python 3.10+ déjà installé)

python3.10 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

📦 Dépendances principales

  • Flask==2.3.3
  • pandas==2.1.4
  • scikit-learn==1.3.2
  • matplotlib==3.8.2
  • numpy==1.26.3
  • seaborn==0.12.2

Toutes les versions sont précisées dans requirements.txt.


⚙️ Fonctionnement & points d’entrée

  • app.py : Lance l’interface web Flask (formulaire, prédiction, résultats dynamiques)
  • model/traffic_model.py : Logique IA (prétraitement, entraînement, prédiction, évaluation)
  • controller/routes.py : Routes Flask (MVC)
  • templates/index.html : Formulaire principal, affichage dynamique des résultats
  • static/css/style.css : Styles personnalisés
  • static/images/ : Images, icônes, visualisations (à compléter)
  • devbook.md : Suivi du développement

📊 Données

  • Les données sont générées de façon synthétique par le modèle (model/traffic_model.py).
  • Possibilité d’ajouter une base SQLite ou des fichiers CSV dans data/ pour enrichir le projet.

🌐 Utilisation

  1. Lancer l’application web
    source venv310/bin/activate
    python app.py
  2. Accéder à l’interface : http://localhost:5000
  3. Remplir le formulaire avec les conditions de trafic
  4. Cliquer sur « Prédire »
  5. Obtenir la prédiction (faible, moyen, élevé), les explications et les statistiques

📈 Visualisations

Des graphiques peuvent être générés pour analyser le modèle :

  • Statistiques de performance (accuracy, importance des variables)
  • Visualisations à compléter dans static/images/ ou visualizations/

Pour générer ou regénérer les graphiques : (à compléter selon les scripts disponibles)

# Exemple :
# python visualizations/generate_images.py

🧪 Tests & vérifications

  • Vérifier que l’application se lance sans erreur
  • Tester plusieurs combinaisons dans le formulaire
  • Les métriques (accuracy, importance des features) s’affichent dans la section statistiques
  • Lancer les tests unitaires :
    pytest

📝 Bonnes pratiques & conseils d’étudiant

  • Ne versionnez pas les fichiers volumineux ou sensibles (venv310/, .db, .pyc, etc. — voir .gitignore)
  • Gardez l’environnement isolé (pyenv ou venv)
  • Commentez votre code pour mieux comprendre plus tard
  • Utilisez le devbook.md pour suivre l’avancement et ne rien oublier
  • N’hésitez pas à demander de l’aide si vous bloquez sur un bug ou une question IA
  • Automatisez les tests avec GitHub Actions (.github/workflows/ci-cd.yml)

👤 Auteur

Abderrahman AJINOU
Étudiant en 2ᵉ année licence Informatique Générale
Université Paris Cité, Campus Grand Moulin
Mail : abderrahman.ajinou@etu.u-paris.fr


📚 Ressources utiles

🏆 Pour toute question ou suggestion, n’hésitez pas à me contacter !

About

Prédicteur de congestion routière utilisant RandomForest sur données synthétiques. Classification multi-classes (faible/moyen/élevé) avec interface web.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published