Ce projet s’inscrit dans le cadre du Défi CodeML – IRIU × VILLE_IA, qui vise à aider la Ville de Montréal à cibler les bâtiments à prioriser pour la rénovation énergétique, en intégrant à la fois leur vulnérabilité climatique (pluies diluviennes, inondations, îlots de chaleur) et leur dépendance énergétique (consommation et émissions de GES).
- Fusionner des données climatiques, énergétiques et sociales
- Créer un indice de résilience multi-critères pour chaque bâtiment
- Générer un classement prioritaire pour guider les décisions municipales
- Visualiser les résultats via une carte interactive
Le projet combine plusieurs dimensions d'analyse :
- Données climatiques : indices structurel, thermique, hydrique et de végétation
- Données énergétiques : consommation (électricité, gaz, mazout), émissions GES
- Données sociales : indices de défavorisation par quartier
- Feature engineering : création d'indicateurs de résilience et d'importance
Indice de résilience :
Résilience = 0.5 × score_adaptation + 0.5 × (1 - score_vulnérabilité)
Indice d'importance (pour la priorisation) :
Importance = 0.4 × (1 - résilience) + 0.4 × vulnérabilité_climatique + 0.2 × dépendance_fossile
- 218 bâtiments analysés et classés par priorité
- 3 catégories : Vulnérable – priorité élevée | Priorité moyenne | Bonne performance
- Carte interactive permettant d'ajuster dynamiquement les pondérations des critères
- Classement final exporté dans
notebooks/classement_final_batiments.csv
.
├── index.html # 🗺️ Carte interactive des bâtiments
├── environment.yml # Configuration environnement Conda
├── requirements.txt # Dépendances Python alternatives
│
├── notebooks/
│ ├── CODEML.ipynb # 📊 Notebook principal (pipeline complet)
│ └── classement_final_batiments.csv # 🏆 Classement priorisé des bâtiments
│
├── explorations/ # 🔬 Analyses exploratoires préliminaires
│ ├── climat.ipynb # Analyse données climatiques
│ ├── electricite.ipynb # Exploration consommation électrique
│ ├── electricite_1.ipynb # Approfondissement électricité
│ ├── inondations.ipynb # Risques d'inondation
│ ├── pluie.ipynb # Données pluviométriques
│ └── social.ipynb # Indices socio-économiques
│
├── data/ # 📦 Données brutes (non versionnées)
│
└── outputs/ # 💾 Résultats générés
├── indice_resilience.geojson # GeoJSON pour carte interactive
├── indice_resilience.csv # Export CSV des résultats
├── dataset_batiments_climat_elec.gpkg # Fusion bâtiments + climat + énergie
├── dataset_climatique_consolide_montreal.gpkg
├── dataset_electricite_nettoye.csv
└── social_mtl_clean.geojson
git clone <votre-repo-url>
cd ml_competitionRecréer l'environnement complet avec toutes les dépendances :
conda env create -f environment.yml
conda activate mlcomppython3 -m venv venv
source venv/bin/activate # Sur Windows: venv\Scripts\activate
pip install -r requirements.txtjupyter notebook --version
python -c "import geopandas; print('Environnement prêt!')"Si les fichiers dans outputs/ ne sont pas présents, exécutez le notebook:
jupyter notebook notebooks/CODEML.ipynbPuis exécutez toutes les cellules (Cell → Run All).
Le notebook CODEML.ipynb contient le pipeline complet :
jupyter notebook notebooks/CODEML.ipynbSections du notebook :
- Lecture et exploration des données brutes
- Nettoyage et géocodage (adresses → coordonnées GPS)
- Fusion spatiale (bâtiments ⊗ climat ⊗ social)
- Création des indicateurs (résilience, importance, clustering)
- Visualisations et export des résultats
💡 Exécuter toutes les cellules :
Cell → Run All(génère les fichiers dansoutputs/)
Visualisez et ajustez la priorisation en temps réel :
Lancer le serveur local :
python3 -m http.server 8000Accéder à la carte :
Ouvrez http://localhost:8000/index.html dans votre navigateur
Fonctionnalités :
- 🎚️ Curseurs interactifs : ajustez les pondérations des 6 facteurs
- Structurel, thermique, hydrique, végétation
- Social (défavorisation)
- Renouvelable (énergie propre)
- 🔄 Recalcul dynamique : cliquez sur "Recalculer les Indices"
- 🔍 Détails par bâtiment : cliquez sur les marqueurs pour voir les métriques complètes
- 🎨 Gradient de couleur : rouge (priorité élevée) → jaune → vert (bonne performance)
Arrêter le serveur : Ctrl+C dans le terminal
Les notebooks dans explorations/ permettent d'approfondir chaque dimension :
jupyter notebook explorations/climat.ipynb: Indices de risque climatique par zoneelectricite_1.ipynb: Analyse détaillée de la consommation énergétiquesocial.ipynb: Cartographie des inégalités socio-économiquesinondations.ipynb+pluie.ipynb: Risques hydriques
Classement CSV :
cat notebooks/classement_final_batiments.csvColonnes principales :
id,Adresse: identification du bâtimentindice_resilience: capacité d'adaptation (0–1)indice_importance: priorité de rénovation (0–1)categorie_finale: Vulnérable / Priorité moyenne / Bonne performancerang_final: classement global (1 = plus prioritaire)
📊 Top 10 des bâtiments prioritaires :
| Rang | Adresse | Catégorie | Importance | Résilience | Vulnérabilité Climat |
|---|---|---|---|---|---|
| 🥇 1 | 505 Boulevard De Maisonneuve E | Vulnérable – priorité élevée | 1.000 | 0.402 | 0.977 |
| 🥈 2 | 7047 Rue Saint-Dominique | Vulnérable – priorité élevée | 0.960 | 0.367 | 0.915 |
| 🥉 3 | 5485 Chemin De La Côte-Saint-Paul | Vulnérable – priorité élevée | 0.897 | 0.403 | 1.000 |
| 4 | 5115 Rue Des Galets | Vulnérable – priorité élevée | 0.875 | 0.424 | 0.795 |
| 5 | 944 Rue Saint-Paul O | Vulnérable – priorité élevée | 0.853 | 0.446 | 0.994 |
| 6 | 7959 Av. 16E | Vulnérable – priorité élevée | 0.850 | 0.429 | 0.835 |
| 7 | 5 Avenue Laurier O | Vulnérable – priorité élevée | 0.840 | 0.408 | 0.785 |
| 8 | 5485 Ch. Côte-Saint-Paul | Vulnérable – priorité élevée | 0.840 | 0.438 | 1.000 |
| 9 | 7959 16E Avenue | Vulnérable – priorité élevée | 0.838 | 0.439 | 0.835 |
| 10 | 1500 Rue Des Carrières | Vulnérable – priorité élevée | 0.824 | 0.432 | 0.830 |
💡 Fichier complet :
notebooks/classement_final_batiments.csv(218 bâtiments)
- Climatiques : Indices de vulnérabilité structurelle, thermique, hydrique et de végétation par secteur
- Énergétiques : Consommation d'électricité, gaz naturel, mazout et émissions GES par bâtiment
- Sociales : Indices de défavorisation socio-économique par quartier (CIUSSS)
- Géographiques : Géolocalisation via Google Maps Geocoding API
- GeoPackage (
.gpkg) : données géospatiales avec géométries - GeoJSON : export pour visualisation web
- CSV : tableaux de données et classements
Langages & Frameworks :
- Python 3.10
- Jupyter Notebook
Bibliothèques principales :
geopandas: traitement de données géospatialespandas: manipulation de données tabulairesmatplotlib+seaborn: visualisationsscikit-learn: clustering et normalisationshapely: opérations géométriquesgeopy: géocodage d'adresses
Frontend :
- Leaflet.js : cartographie interactive
- HTML/CSS/JavaScript vanilla
✅ Pipeline complet : notebook reproductible du nettoyage à la priorisation
✅ Classement actionnable : 218 bâtiments catégorisés par ordre de priorité
✅ Carte interactive : interface web pour explorer et ajuster les pondérations
✅ Exports multi-formats : CSV, GeoJSON, GeoPackage
✅ Documentation : README détaillé et code commenté
- Optimisation bayésienne : ajuster automatiquement les pondérations (Optuna intégré)
- Prédiction temporelle : anticiper l'évolution de la résilience
- Intégration API : pipeline automatisé avec mise à jour des données en temps réel
- Scoring de coûts : intégrer des estimations de coûts de rénovation
- Dashboard BI : tableau de bord Power BI ou Tableau pour la Ville
Tidiane Cissé, Sarah Tabti, Yasmine Tamdrari
Projet réalisé dans le cadre du défi Bâtiments, énergie et résilience face aux pluies diluviennes – Défi CodeML – IRIU × VILLE_IA