File size: 19,675 Bytes
bcf97d6
 
591b7c9
 
bcf97d6
 
 
591b7c9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bcf97d6
591b7c9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bcf97d6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
# =========================================================
# KNOWLEDGE BASE - HACKATHON INDABAX CAMEROON 2026
# Source : Documents officiels + Starter Notebook + Notebooks équipe
# Généré automatiquement à partir de tous les fichiers fournis
# =========================================================

KNOWLEDGE_BASE = [

    # ── CONTEXTE GÉNÉRAL ─────────────────────────────────────────────────────
    {
        "category": "Contexte",
        "title": "But de la compétition IndabaX 2026",
        "content": (
            "Le hackathon IndabaX Cameroon 2026 a pour thème 'L'IA au service de la résilience climatique et sanitaire au Cameroun'. "
            "L'objectif principal est de construire un modèle d'intelligence artificielle capable d'anticiper plusieurs jours à l'avance "
            "les épisodes de dégradation de la qualité de l'air, pour permettre aux autorités sanitaires d'agir avant que les populations "
            "soient exposées. Il s'agit d'un concours de data science organisé par Deep Learning IndabaX Cameroon."
        )
    },
    {
        "category": "Contexte",
        "title": "Dataset IndabaX 2026 — Vue d'ensemble",
        "content": (
            "Le dataset contient 87 240 observations météorologiques quotidiennes pour 42 villes des 10 régions administratives du Cameroun, "
            "couvrant 6 ans de données continues (du 1er janvier 2020 au 20 décembre 2025). "
            "Chaque ligne représente une ville un jour donné. "
            "Les colonnes incluent : températures (max, min, moyenne, ressentie), précipitations, vent, ensoleillement, rayonnement solaire, "
            "évapotranspiration FAO, codes météo WMO et coordonnées GPS."
        )
    },
    {
        "category": "Contexte",
        "title": "Liste des 42 villes du dataset par région",
        "content": (
            "Adamaoua : Tibati, Tignere, Ngaoundere, Meiganga. "
            "Centre : Bafia, Akonolinga, Yaounde, Mbalmayo. "
            "Est : Bertoua, Abong-Mbang, Batouri, Yokadouma. "
            "Extrême-Nord : Maroua, Kousseri, Mokolo, Yagoua. "
            "Littoral : Edea, Nkongsamba, Loum. "
            "Nord : Garoua, Guider, Poli, Touboro. "
            "Nord-Ouest : Bamenda, Kumbo, Wum, Mbengwi. "
            "Ouest : Bafoussam, Dschang, Foumban, Mbouda. "
            "Sud : Ebolowa, Kribi, Sangmelima, Ambam. "
            "Sud-Ouest : Buea, Limbe, Kumba, Mamfe."
        )
    },

    # ── QUALITÉ DE L'AIR ─────────────────────────────────────────────────────
    {
        "category": "Qualité de l'air",
        "title": "Qu'est-ce que le PM2.5 et le pm25_proxy ?",
        "content": (
            "Le PM2.5 désigne les particules fines de diamètre inférieur à 2,5 micromètres — les plus dangereuses car elles pénètrent "
            "profondément dans les poumons. Dans le dataset IndabaX, 'pm25_proxy' est un indice calculé comme proxy car il n'existe pas "
            "de mesures directes de PM2.5 au sol. "
            "Formule du proxy : 0.35 × température_moyenne + 0.25 × rayonnement_solaire + 0.20 × evapotranspiration "
            "+ 8.0 × (vent < 5 km/h) + 5.0 × (pas de pluie) + 4.0 × (saison_sèche). "
            "Plus cette valeur est haute, plus la qualité de l'air est mauvaise."
        )
    },
    {
        "category": "Qualité de l'air",
        "title": "Seuils OMS et niveaux d'alerte PM2.5",
        "content": (
            "Niveaux de risque basés sur le pm25_proxy : "
            "Vert (Sain) : activités normales, air de bonne qualité. "
            "Jaune (Modéré) : prudence pour les asthmatiques et personnes sensibles. "
            "Orange (Alerte) : réduction des efforts physiques intenses recommandée. "
            "Rouge (Urgence/Dangereux) : air dangereux, port du masque recommandé, limitation des déplacements. "
            "Les KPI du dashboard calculent : ville la plus polluée, région la plus polluée, jour le plus critique, "
            "nombre de villes en zone dangereuse, et mois le plus pollué."
        )
    },
    {
        "category": "Qualité de l'air",
        "title": "5 mécanismes de dégradation de la qualité de l'air au Cameroun",
        "content": (
            "1. Accumulation (2-7 jours) : vent faible + absence de pluie → concentration croissante de PM2.5, PM10, CO, NO2. "
            "2. Réactions photochimiques (quelques heures) : fort ensoleillement + chaleur > 32°C → formation d'ozone troposphérique (O3) et smog. "
            "3. Transport d'aérosols désertiques (3-14 jours) : vent fort du Sahara via l'Harmattan → pic de particules minérales PM10 dans le Nord. "
            "4. Feux de brousse (1-5 jours) : saison sèche + pratiques agricoles → particules fines PM2.5 et fumée sur grandes distances. "
            "5. Inversion thermique (1-3 jours) : nuit froide + jour chaud en zone encaissée → emprisonnement des polluants en basse altitude. "
            "Le seul processus positif est le lessivage : la pluie nettoie naturellement l'atmosphère."
        )
    },
    {
        "category": "Qualité de l'air",
        "title": "Zones et villes à risque de pollution au Cameroun",
        "content": (
            "Grand Nord (Maroua, Garoua, Kousseri) : risque aérosols désertiques et harmattan, ~3 millions d'habitants, critique de novembre à mars. "
            "Littoral/Douala-Edea : pollution industrielle + trafic dense + humidité stagnante, ~4 millions d'habitants, critique de juillet à septembre. "
            "Yaoundé et plateau Centre : smog urbain + feux agricoles périurbains, ~3,5 millions d'habitants, critique de décembre à février. "
            "Adamaoua (Ngaoundéré) : feux de brousse + vent de vallée, ~1 million, critique de janvier à mars. "
            "Est forestier (Bertoua, Yokadouma) : fumée de brûlis agricole et déforestation, ~800 000 habitants, critique de novembre à avril."
        )
    },
    {
        "category": "Qualité de l'air",
        "title": "Impacts sanitaires de la mauvaise qualité de l'air",
        "content": (
            "Impacts sanitaires directs : maladies respiratoires aiguës (asthme, bronchites), irritations oculaires et cutanées, "
            "aggravation des pathologies cardiovasculaires, mortalité prématurée chez les enfants et personnes âgées, "
            "réduction de la capacité pulmonaire des travailleurs extérieurs. "
            "Impacts environnementaux : pluies acides dégradant les sols, dépôt de particules sur la végétation réduisant la photosynthèse, "
            "contamination des ressources en eau, accélération de la dégradation des forêts du bassin du Congo."
        )
    },

    # ── VARIABLES DU DATASET ─────────────────────────────────────────────────
    {
        "category": "Variables",
        "title": "Variables du dataset et leur influence sur la qualité de l'air",
        "content": (
            "CRITIQUE : wind_speed_10m_max (< 5 km/h = stagnation = accumulation polluants), precipitation_sum (pluie = lessivage naturel). "
            "TRÈS ÉLEVÉ : weather_code WMO (codes 06=brume sèche, 07=tempête sable, 40-49=brouillard, 95+=orage), "
            "temperature_2m_max (> 32°C = accélération réactions photochimiques), shortwave_radiation_sum (catalyse formation ozone). "
            "ÉLEVÉ : wind_gusts_10m_max (remise en suspension des particules), wind_direction_10m_dominant (Nord-Est = harmattan saharien), "
            "precipitation_hours (durée du lessivage), apparent_temperature_max (chaleur ressentie = vulnérabilité populations). "
            "MODÉRÉ-ÉLEVÉ : et0_fao_evapotranspiration (sol sec = poussières mobilisables), sunshine_duration (durée photochimique)."
        )
    },
    {
        "category": "Variables",
        "title": "Variables dérivées (feature engineering) à construire",
        "content": (
            "jours_sans_pluie_consecutifs : compte les jours consécutifs sans pluie — à partir de 5 jours = seuil d'alerte. "
            "cumul_pluie_7j : somme glissante 7 jours des précipitations — mesure l'effet mémoire du lessivage. "
            "indice_stagnation : (1/wind_speed) × (1 - précipitations normalisées) — score 0-10 de stagnation atmosphérique. "
            "amplitude_thermique : temp_max - temp_min — grande amplitude = instabilité = inversions thermiques nocturnes. "
            "ratio_ensoleillement : sunshine_duration / daylight_duration — potentiel photochimique réel de la journée. "
            "saison_locale : saison sèche (mois 11,12,1,2,3) ou saison des pluies — facteur organisateur le plus important. "
            "zone_climatique : équatorial, tropical soudanien, tropical sahélien, littoral. "
            "Lags temporels : valeurs de J-1 à J-7 pour vent, température — capturer l'inertie atmosphérique. "
            "is_dry_season : variable binaire encodant la saison sèche camerounaise."
        )
    },
    {
        "category": "Variables",
        "title": "Formule pm25_proxy du starter notebook",
        "content": (
            "Le pm25_proxy (variable cible) est calculé ainsi dans le starter notebook officiel : "
            "pm25_proxy = 0.35 × temperature_2m_mean + 0.25 × shortwave_radiation_sum + 0.20 × et0_fao_evapotranspiration "
            "+ 8.0 × is_no_wind (vent < 5 km/h) + 5.0 × is_no_rain (précipitations < 0.1 mm) + 4.0 × is_dry_season. "
            "Note : c'est une approximation. Le vrai PM2.5 peut être enrichi via NASA MERRA-2 ou OpenAQ."
        )
    },

    # ── MODÉLISATION ─────────────────────────────────────────────────────────
    {
        "category": "Modélisation",
        "title": "Algorithmes et stratégie de modélisation",
        "content": (
            "Baseline : Random Forest ou Régression logistique avec température max, vent, précipitations, sunshine. "
            "Intermédiaire : XGBoost ou LightGBM avec variables dérivées, saison et zone_climatique — métriques : MAE, RMSE, feature importance. "
            "Avancé : LSTM ou Transformer temporel sur séries temporelles complètes par ville — métriques : MAPE, CRPS, intervalles de confiance. "
            "Validation obligatoire avec TimeSeriesSplit (pas de shuffle aléatoire) pour respecter la chronologie. "
            "Optimisation des hyperparamètres avec Optuna ou GridSearchCV. "
            "Interprétabilité via SHAP Values — crucial pour expliquer les pics de pollution aux autorités sanitaires."
        )
    },
    {
        "category": "Modélisation",
        "title": "Variable cible — 3 approches possibles",
        "content": (
            "Approche A (Hackathon, recommandée) : indice de stagnation atmosphérique calculé entièrement depuis le dataset. Faisable immédiatement. "
            "Approche B : weather_code WMO (tempête de sable, brouillard, etc.) — variable déjà dans le dataset, lien direct avec événements extrêmes. "
            "Approche C (idéale) : PM2.5 réel depuis données satellitaires NASA MERRA-2 ou stations OpenAQ — nécessite données externes mais maximise l'impact réel. "
            "Pour le hackathon : utiliser l'approche A ou B. Pour un projet complet : enrichir avec l'approche C."
        )
    },
    {
        "category": "Modélisation",
        "title": "Features utilisées dans le modèle baseline du starter notebook",
        "content": (
            "Features du modèle officiel : temperature_2m_mean, temperature_2m_max, temperature_2m_min, precipitation_sum, "
            "wind_speed_10m_max, wind_gusts_10m_max, shortwave_radiation_sum, et0_fao_evapotranspiration, sunshine_ratio, "
            "temp_amplitude, is_no_wind, is_no_rain, is_dry_season, month_sin, month_cos, day_of_year, "
            "temp_lag1, temp_lag7, wind_lag1, temp_roll7, latitude, longitude, region_enc, city_enc. "
            "Encodage cyclique du mois : month_sin = sin(2π × mois/12), month_cos = cos(2π × mois/12)."
        )
    },

    # ── SAISONS ET CLIMATOLOGIE ───────────────────────────────────────────────
    {
        "category": "Climatologie",
        "title": "Saisons et saisonnalité au Cameroun",
        "content": (
            "Saison sèche au Cameroun : mois 11, 12, 1, 2, 3 (novembre à mars) — période critique pour la pollution. "
            "Saison des pluies : d'avril à octobre — la pluie nettoie l'atmosphère, lessivage naturel. "
            "Harmattan : vent froid et sec du Nord-Est entre novembre et mars, chargé de particules sahariennes, "
            "affecte principalement le Grand Nord (Maroua, Garoua, Kousseri) mais peut atteindre le Centre et le Littoral. "
            "Les températures suivent une saisonnalité annuelle régulière et ont montré une tendance à la hausse de 2020 à 2025. "
            "Les précipitations sont concentrées sur certains mois, avec les pics en juin-septembre pour le littoral "
            "et mars-octobre pour le Centre-Sud."
        )
    },
    {
        "category": "Climatologie",
        "title": "Zones climatiques du Cameroun et risques spécifiques",
        "content": (
            "Équatorial Guinéen (Yaoundé, Mbalmayo, Ebolowa, Kribi) : smog urbain, feux agricoles, humidité élevée. "
            "Équatorial Camerounais (Bafoussam, Dschang, Buea, Limbe) : brouillard volcanique Buea/Limbe, pollution d'altitude. "
            "Tropical Soudanien (Ngaoundéré, Bertoua, Meiganga) : feux de brousse en saison sèche, particules fines. "
            "Tropical Sahélien (Maroua, Garoua, Kousseri, Mokolo) : tempêtes de sable, aérosols désertiques, harmattan. "
            "Littoral Atlantique (Edéa, Nkongsamba) : pollution industrielle, humidité marine, inversion thermique."
        )
    },
    {
        "category": "Climatologie",
        "title": "Extrêmes climatiques observés dans le dataset",
        "content": (
            "Journées à fortes précipitations (> 20 mm) : plus fréquentes en saison des pluies (juin-septembre). "
            "Pics de température max ≥ 38°C : localisés principalement dans le Grand Nord (Maroua, Kousseri, Garoua). "
            "Rafales extrêmes de vent : définies au 95e percentile — rares mais concentrées sur certaines villes. "
            "Amplitude thermique (temp_max - temp_min) : plus grande dans les régions arides du Nord. "
            "La température ressentie (apparent_temperature) est souvent supérieure à la température réelle dans les régions humides, "
            "et inférieure dans les zones venteuses."
        )
    },

    # ── DASHBOARD ET KPIs ─────────────────────────────────────────────────────
    {
        "category": "Dashboard",
        "title": "15 KPIs du tableau de bord IndabaX 2026",
        "content": (
            "1. PM2.5 moyen national. 2. Ville la plus polluée. 3. Région la plus polluée. "
            "4. Jour le plus critique. 5. Niveau alerte national (code couleur OMS). "
            "6. % jours saison sèche critiques. 7. Mois le plus pollué. "
            "8. Nombre de villes en zone dangereuse. 9. Région la plus ventée. 10. Amplitude thermique maximale. "
            "11. Variable météo la plus corrélée au PM2.5. 12. Feature la plus importante du modèle ML. "
            "13. R² du meilleur modèle. 14. PM2.5 prédit à J+7 (Prophet). 15. Nombre de jours dangereux prévus."
        )
    },
    {
        "category": "Dashboard",
        "title": "Structure du tableau de bord — 5 pages",
        "content": (
            "Page 1 Accueil (Vue générale) : carte choroplèthe du Cameroun, évolution annuelle pm25_proxy 2020-2025, "
            "influence des précipitations sur PM2.5, top villes polluées, influence température sur PM2.5. "
            "Page 2 Analyse Spatiale : carte 42 villes colorée PM2.5, top 10 villes les plus polluées, distribution par région, température réelle vs ressentie. "
            "Page 3 Analyse Temporelle : évolution PM2.5 par mois/année, précipitations/vent par mois, double axe PM2.5/précipitations, décomposition Prophet. "
            "Page 4 Prédiction & Alertes : courbe Prophet avec IC 95%, tableau 7 jours à venir, carte alertes actives, réel vs prédit, comparaison R² modèles. "
            "Page 5 Facteurs Climatiques : feature importance top 20, matrice de corrélation, scatter rayonnement/vent vs PM2.5, résidus, bilan hydrique."
        )
    },
    {
        "category": "Dashboard",
        "title": "Outils techniques du projet",
        "content": (
            "Frontend dashboard : Streamlit avec graphiques Plotly Express et Plotly Graph Objects pour l'interactivité. "
            "Modèles ML : Random Forest, XGBoost, LightGBM, Decision Tree — optimisés avec Optuna. "
            "Prévision temporelle : Prophet avec régresseurs météo pour les prédictions à 7 jours. "
            "Backend API : FastAPI (Python) avec endpoints /api/kpi, /api/filters, /api/chat. "
            "Déploiement : Hugging Face Spaces. "
            "Validation : TimeSeriesSplit obligatoire pour respecter la chronologie des données."
        )
    },

    # ── RESSOURCES HYDRIQUES ─────────────────────────────────────────────────
    {
        "category": "Ressources hydriques",
        "title": "Bilan hydrique et agriculture au Cameroun",
        "content": (
            "Bilan hydrique = Précipitations - ET0 (évapotranspiration FAO). "
            "Bilan négatif certains mois = stress hydrique pour l'agriculture. "
            "L'évapotranspiration (et0_fao_evapotranspiration) augmente avec la température et le rayonnement solaire. "
            "Sol sec (ET0 élevé, précipitations nulles) = réservoir de particules fines mobilisables par le vent. "
            "Impact direct sur la qualité de l'air : plus le sol est aride, plus les aérosols minéraux sont en suspension."
        )
    },

    # ── SOURCES DE DONNÉES EXTERNES ──────────────────────────────────────────
    {
        "category": "Données externes",
        "title": "Sources de données externes recommandées",
        "content": (
            "NASA MERRA-2 / MODIS : données satellitaires PM2.5 et AOD — variable cible réelle ou feature de validation (gratuit). "
            "OpenAQ : mesures de stations au sol en Afrique — ground truth pour les villes équipées. "
            "FIRMS NASA (VIIRS/MODIS) : points de feux actifs — feature 'feux de brousse à moins de 50 km'. "
            "OSM / Données urbaines : densité de population, routes, industries — exposition différentielle des populations. "
            "Calendrier agricole : périodes de brûlis, pratiques locales — feature 'risque brûlis actif'."
        )
    },
]