diff --git a/SYNTHESE_TP05.md b/SYNTHESE_TP05.md
new file mode 100644
index 0000000..e31df12
--- /dev/null
+++ b/SYNTHESE_TP05.md
@@ -0,0 +1,178 @@
+# TP05 - Synthèse : monitoring, dérive et redéploiement
+
+Fil rouge : prédiction de la consommation électrique (kWh, 128 clients portugais, pas de 15 min).
+
+Scénario : un modèle a été **entraîné sur 2011** et tourne toujours en production plusieurs années plus
+tard. En ingénieur MLOps, on vérifie si les données **2014** observées en production ont **dérivé** par
+rapport à l'entraînement, on analyse cette dérive avec **Evidently**, puis on mesure son **impact sur les
+performances** (2012 -> 2014) pour décider d'une stratégie de maintenance.
+
+## Ce qui a été construit
+
+- **`tp_module5_monitoring_derive.ipynb`** (notebook exécuté) : Partie 1 (moyennes + histogrammes de
+ `lag_30d` 2011 vs 2014), Partie 2 (rapport de dérive Evidently `DataDriftPreset`), Partie 3 (modèle
+ linéaire entraîné sur 2011, évalué sur 2011-2014). Réutilise `lab/constants.py` (chemins, cible, features).
+- **`tp05_evidently_drift_2011_vs_2014.html`** : rapport Evidently interactif complet (à ouvrir dans un
+ navigateur).
+- **Choix technique** : la feature `lag_365d` (consommation 365 jours plus tôt) est **exclue** car elle
+ est indéfinie (NaN) sur **toute** l'année 2011 (première année, pas d'historique 2010). On travaille donc
+ sur les 5 features définies sur les deux périodes : `lag_1d, lag_7d, lag_30d, rolling_mean_7d,
+ rolling_mean_30d`. Cet ensemble sert à la fois au rapport de dérive et au modèle entraîné sur 2011.
+
+---
+
+## Partie 1 - Observer une dérive
+
+Feature `lag_30d`, sur les années complètes 2011 (train) et 2014 (production) :
+
+| Année | Moyenne `lag_30d` | Effectif |
+|--------------|-------------------|------------|
+| 2011 (train) | **62.041 kWh** | 4 116 352 |
+| 2014 (prod) | **54.054 kWh** | 4 485 120 |
+| Écart | **-7.986 kWh** | **-12.9 %** |
+
+**1.1 - Les deux distributions semblent-elles similaires ?**
+Non. Elles gardent la même **forme** générale (distribution asymétrique étalée vers la droite : beaucoup de
+petites consommations, une longue queue de fortes valeurs), mais l'histogramme 2014 est **décalé vers les
+valeurs plus faibles** et sa moyenne est nettement plus basse. Visuellement, le décalage est net.
+
+**1.2 - La moyenne a-t-elle évolué entre 2011 et 2014 ?**
+Oui, franchement : de **62.04 kWh** à **54.05 kWh**, soit **-7.99 kWh (-12.9 %)**. La consommation moyenne
+(observée via `lag_30d`) a **baissé d'environ 13 %** entre l'entraînement et la production.
+
+**1.3 - Cette évolution paraît-elle suffisamment importante pour parler de dérive ?**
+Une baisse de ~13 % de la moyenne est un signal **fort et cohérent** d'un changement de distribution : c'est
+un indice sérieux de dérive des données. Attention toutefois : la moyenne seule ne **prouve** pas une dérive
+statistique (deux distributions peuvent avoir des moyennes proches et des formes différentes, ou l'inverse).
+Il faut confirmer avec une analyse sur toute la distribution, avec un test et un seuil objectifs (Partie 2).
+
+**1.4 - Cette première analyse est-elle suffisante pour conclure sur l'état du modèle ? Pourquoi ?**
+Non. Elle ne porte que sur **une** feature (`lag_30d`), via un **seul** indicateur (moyenne + comparaison
+visuelle), **sans test statistique ni seuil**, et elle ne dit **rien** des autres features ni de l'**impact
+réel sur la performance** du modèle. C'est un premier indice, pas une conclusion. Il faut (a) un outil de
+monitoring qui teste toutes les features (Partie 2) et (b) mesurer la performance dans le temps (Partie 3).
+
+---
+
+## Partie 2 - Analyse avec un outil de monitoring (Evidently)
+
+Rapport `DataDriftPreset` comparant 2011 (référence) et 2014 (courant), échantillon de 200 000 lignes par
+période (seed fixe). Test choisi automatiquement par Evidently pour de grands échantillons numériques :
+**distance de Wasserstein normalisée**, seuil **0.1**.
+
+| Feature | Test | Drift score | Seuil | Dérive ? |
+|--------------------|-------------------------------|-------------|-------|----------|
+| lag_1d | Wasserstein distance (normed) | 0.165 | 0.1 | Oui |
+| lag_7d | Wasserstein distance (normed) | 0.167 | 0.1 | Oui |
+| lag_30d | Wasserstein distance (normed) | 0.167 | 0.1 | Oui |
+| rolling_mean_7d | Wasserstein distance (normed) | 0.188 | 0.1 | Oui |
+| rolling_mean_30d | Wasserstein distance (normed) | 0.191 | 0.1 | Oui |
+
+Verdict global : **`dataset_drift = True`**, **5 / 5 features en dérive (100 %)**.
+
+**2.1 - Combien de features présentent une dérive ?**
+**Les 5** features analysées présentent une dérive (5 / 5, soit 100 %). Toutes dépassent le seuil de 0.1.
+
+**2.2 - Toutes les features évoluent-elles de la même manière ?**
+Toutes dérivent, mais **pas avec la même intensité**. Les distances de Wasserstein vont de **0.165**
+(`lag_1d`) à **0.191** (`rolling_mean_30d`). Les **moyennes glissantes** (`rolling_mean_7d` 0.188,
+`rolling_mean_30d` 0.191) dérivent un peu **plus** que les **lags bruts** (0.165-0.167) : les indicateurs
+lissés/tendanciels captent davantage la baisse durable du niveau de consommation.
+
+**2.3 - Identifiez deux métriques ou indicateurs du rapport. À quoi servent-ils ?**
+- **Le drift score par feature** (ici la distance de Wasserstein normalisée) : il **quantifie** l'écart
+ entre la distribution de référence (2011) et la distribution courante (2014) pour chaque variable, et le
+ compare à un **seuil** (0.1). Il sert à **détecter et localiser** la dérive, feature par feature.
+- **Le verdict global "Dataset Drift" + la part de colonnes en dérive** : il **agrège** les décisions par
+ feature (nombre / pourcentage de colonnes dérivées, ici 5/5 = 100 %) en une conclusion **au niveau du
+ dataset entier**. Il sert à **trancher globalement** (le dataset a-t-il dérivé, oui/non).
+ (Le rapport affiche aussi, par feature, les **histogrammes de distribution référence vs courant**, utiles
+ pour visualiser la nature du décalage.)
+
+**2.4 - Le rapport conclut-il à une dérive globale du dataset ? Justifiez.**
+**Oui.** `dataset_drift = True`. Le critère par défaut d'Evidently (déclarer une dérive du dataset quand la
+**part de colonnes en dérive dépasse 50 %**) est **largement** franchi : **100 %** des colonnes dérivent.
+Le rapport conclut donc sans ambiguïté à une dérive globale des données d'entrée.
+
+---
+
+## Partie 3 - Mesurer l'impact sur les performances
+
+Modèle (régression linéaire) entraîné **sur 2011 uniquement**, évalué sur chaque année complète :
+
+| Année | Rôle | RMSE (kWh) | MAE (kWh) |
+|-------|-------------------|------------|-----------|
+| 2011 | train (référence) | 7.904 | 4.450 |
+| 2012 | évaluation (prod) | 7.595 | 4.178 |
+| 2013 | évaluation (prod) | 7.486 | 4.095 |
+| 2014 | évaluation (prod) | **7.101** | **3.911** |
+
+**Résultat marquant : l'erreur ne se dégrade pas, elle diminue légèrement d'année en année.**
+
+**3.1 - Peut-on comparer 2011 vs 2012 au même titre que 2012 vs 2013 ?**
+Non. **2011 est l'année d'entraînement** : l'erreur y est mesurée **in-sample** (le modèle a déjà vu ces
+données), donc **optimiste**. Comparer 2011 (in-sample) à 2012 (hors échantillon) mélange deux régimes
+différents, alors que 2012 vs 2013 compare **deux années hors échantillon** entre elles (comparaison
+homogène). De plus, le **niveau de consommation change** d'une année à l'autre : comparer des **RMSE bruts**
+est biaisé par l'échelle de la cible (voir 3.3). 2011 doit donc être traité comme **référence de train**,
+pas comme un point de comparaison équivalent aux années de production.
+
+**3.2 - Observe-t-on une dégradation progressive ?**
+**Non.** En valeur absolue, la performance **s'améliore** légèrement : RMSE 7.90 -> 7.60 -> 7.49 -> 7.10 et
+MAE 4.45 -> 4.18 -> 4.10 -> 3.91 de 2011 à 2014. Aucune dégradation observée sur ces métriques.
+
+**3.3 - Cette (absence de) dégradation est-elle cohérente avec la dérive détectée ?**
+À première vue c'est surprenant (dérive nette en Partie 2, mais pas de perte de performance), et c'est
+**instructif** : **une dérive des données ne signifie pas automatiquement une dégradation du modèle**.
+Explication : la consommation a **baissé** (~-13 % sur `lag_30d`, Partie 1), donc la **cible** (kWh) est plus
+petite en 2014 ; comme RMSE et MAE sont des erreurs **absolues** en kWh, elles **diminuent mécaniquement**
+quand l'échelle de la cible diminue. Pendant ce temps, la **relation features -> cible** (les lags prédisent
+la consommation courante) est restée **stable**. On a donc une dérive des données **sans** dérive de la
+relation. Pour comparer rigoureusement les années, il faudrait une métrique **indépendante de l'échelle**
+(MAPE, R², RMSE normalisé).
+
+**3.4 - Peut-on conclure que le modèle 2011 est encore fiable en 2014 ?**
+Sur la base des erreurs absolues, il **ne s'est pas dégradé** (il fait même un peu mieux en kWh). Mais on ne
+peut pas **conclure** à sa pleine fiabilité sur ces seuls chiffres : (1) les métriques absolues sont
+**trompeuses** quand l'échelle de la cible change ; (2) on n'a mesuré que l'**amplitude** de l'erreur, pas un
+éventuel **biais systématique** (sur/sous-estimation) ni la performance par segment (client, saison).
+Verdict prudent : **pas de signe de dégradation**, mais à **confirmer** avec des métriques relatives et une
+analyse des résidus avant de déclarer le modèle fiable.
+
+**3.5 - Que faudrait-il faire ensuite : surveiller, réentraîner, ou redéployer ?**
+**Surveiller.** La dérive des données est réelle, mais **sans impact mesuré** sur la performance : rien
+n'impose un réentraînement ou un redéploiement immédiat (ce serait du travail et du risque pour un gain non
+démontré). On met en place un **monitoring continu** (dérive des features + performance suivie avec une
+métrique relative + dérive des prédictions et de la cible dès que la vérité terrain arrive) et on **déclenche
+un réentraînement seulement si/quand** la performance se dégrade réellement ou qu'un concept drift apparaît.
+
+**3.6 - Quel type de dérive semble en jeu ? Quelles analyses préconisez-vous ?**
+Type : **data drift** (dérive des covariables / *covariate shift*). Les distributions des features d'entrée
+ont changé (baisse durable du niveau de consommation), tandis que la **relation** features -> cible semble
+**stable** (pas de perte de performance) : **pas de concept drift évident**. Analyses préconisées :
+- suivre une **métrique de performance indépendante de l'échelle** (MAPE, R², nRMSE) dans le temps, plutôt
+ que le RMSE brut ;
+- monitorer aussi la **dérive des prédictions** et de la **cible** (*target drift*), pas seulement des
+ features en entrée ;
+- **analyser les résidus** (biais moyen, hétéroscédasticité) et **segmenter** (par client, par saison) ;
+- surtout, dès que la **vérité terrain** est disponible (avec délai), **recalculer la performance réelle en
+ production** pour détecter précocement un éventuel **concept drift** : c'est la fermeture de la *feedback
+ loop* MLOps (surveiller -> alerter -> réentraîner -> redéployer).
+
+---
+
+## Reproduire
+
+Sur la VM, dans `~/tp` (venv `/opt/venvs/mlops`). Le TP05 est **100 % local** (données `/data/modelling`) :
+aucun secret réseau (MLflow, S3) n'est nécessaire.
+
+```bash
+# Ré-exécuter le notebook (régénère les sorties + le rapport HTML)
+/opt/venvs/mlops/bin/jupyter nbconvert --to notebook --execute --inplace tp_module5_monitoring_derive.ipynb
+```
+
+Consultation interactive (service `jupyter-tp`, token `mlops`) :
+
+```
+https://jupyter.192-168-122-143.nip.io/lab/tree/tp_module5_monitoring_derive.ipynb?token=mlops
+```
diff --git a/tp05_evidently_drift_2011_vs_2014.html b/tp05_evidently_drift_2011_vs_2014.html
new file mode 100644
index 0000000..f5a58e0
--- /dev/null
+++ b/tp05_evidently_drift_2011_vs_2014.html
@@ -0,0 +1,646 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
+
+
+
+
+
diff --git a/tp_module5_monitoring_derive.ipynb b/tp_module5_monitoring_derive.ipynb
new file mode 100644
index 0000000..15d5694
--- /dev/null
+++ b/tp_module5_monitoring_derive.ipynb
@@ -0,0 +1,597 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "eced4520",
+ "metadata": {},
+ "source": [
+ "# TP05 : Monitoring, dérive et redéploiement\n",
+ "\n",
+ "Fil rouge : prédiction de la **consommation électrique** (kWh, 128 clients portugais, pas de 15 min).\n",
+ "\n",
+ "**Scénario.** Un modèle a été **entraîné sur 2011** et tourne toujours en production plusieurs années\n",
+ "plus tard. En tant qu'ingénieur MLOps, on vérifie si les données **2014** observées en production ont\n",
+ "**dérivé** par rapport à l'entraînement, on analyse cette dérive avec **Evidently**, puis on mesure son\n",
+ "**impact sur les performances** (2012 -> 2014).\n",
+ "\n",
+ "Les réponses rédigées aux questions **1.1 - 3.6** sont dans `SYNTHESE_TP05.md`.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "6fba1bc0",
+ "metadata": {
+ "execution": {
+ "iopub.execute_input": "2026-07-25T08:08:26.297146Z",
+ "iopub.status.busy": "2026-07-25T08:08:26.296988Z",
+ "iopub.status.idle": "2026-07-25T08:08:36.139225Z",
+ "shell.execute_reply": "2026-07-25T08:08:36.138397Z"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "features : (17952768, 6) | colonnes : ['lag_1d', 'lag_7d', 'lag_30d', 'lag_365d', 'rolling_mean_7d', 'rolling_mean_30d']\n",
+ "cible : consumption_kwh\n",
+ "années : [np.int32(2011), np.int32(2012), np.int32(2013), np.int32(2014), np.int32(2015)]\n",
+ "feature set TP05 (lag_365d exclu) : ['lag_1d', 'lag_7d', 'lag_30d', 'rolling_mean_7d', 'rolling_mean_30d']\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sys\n",
+ "from pathlib import Path\n",
+ "sys.path.insert(0, str(Path.cwd())) # rendre le package lab/ importable\n",
+ "\n",
+ "import warnings\n",
+ "warnings.filterwarnings(\"ignore\")\n",
+ "\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn.metrics import root_mean_squared_error, mean_absolute_error\n",
+ "\n",
+ "from lab import constants\n",
+ "\n",
+ "RANDOM_STATE = 42\n",
+ "TARGET = constants.TARGET\n",
+ "\n",
+ "# Données source déjà préparées (features + cible), cf. lab/split/cli.py\n",
+ "features = pd.read_parquet(constants.SOURCE_DIR / constants.FEATURE_FILENAME)\n",
+ "target = pd.read_parquet(constants.SOURCE_DIR / constants.TARGET_FILENAME)\n",
+ "df = features.join(target)\n",
+ "\n",
+ "# Année de chaque observation (index MultiIndex : individual, timestamp)\n",
+ "df[\"year\"] = df.index.get_level_values(\"timestamp\").year\n",
+ "\n",
+ "# lag_365d est indéfini (NaN) sur TOUTE l'année 2011 (première année, pas d'historique 2010).\n",
+ "# On l'exclut donc du modèle entraîné sur 2011 ET du rapport de dérive, afin de comparer des\n",
+ "# distributions bien définies sur les deux périodes (2011 et 2014).\n",
+ "DRIFT_FEATURES = [\"lag_1d\", \"lag_7d\", \"lag_30d\", \"rolling_mean_7d\", \"rolling_mean_30d\"]\n",
+ "\n",
+ "print(\"features :\", features.shape, \"| colonnes :\", list(features.columns))\n",
+ "print(\"cible :\", TARGET)\n",
+ "print(\"années :\", sorted(df[\"year\"].unique()))\n",
+ "print(\"feature set TP05 (lag_365d exclu) :\", DRIFT_FEATURES)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8a984f27",
+ "metadata": {},
+ "source": [
+ "## Partie 1 - Observer une dérive\n",
+ "\n",
+ "Comparaison simple des données d'entraînement (**2011**) et des données observées en production\n",
+ "(**2014**), à partir de la feature **`lag_30d`** (consommation 30 jours plus tôt) :\n",
+ "moyenne des deux distributions, puis histogrammes superposés.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "124db852",
+ "metadata": {
+ "execution": {
+ "iopub.execute_input": "2026-07-25T08:08:36.141150Z",
+ "iopub.status.busy": "2026-07-25T08:08:36.140967Z",
+ "iopub.status.idle": "2026-07-25T08:08:36.282318Z",
+ "shell.execute_reply": "2026-07-25T08:08:36.281575Z"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "lag_30d - moyenne 2011 (train) : 62.041 kWh (n = 4,116,352)\n",
+ "lag_30d - moyenne 2014 (prod) : 54.054 kWh (n = 4,485,120)\n",
+ "écart 2014 - 2011 : -7.986 kWh (-12.9 %)\n"
+ ]
+ }
+ ],
+ "source": [
+ "lag_2011 = df.loc[df[\"year\"] == 2011, \"lag_30d\"].dropna()\n",
+ "lag_2014 = df.loc[df[\"year\"] == 2014, \"lag_30d\"].dropna()\n",
+ "\n",
+ "mean_2011 = lag_2011.mean()\n",
+ "mean_2014 = lag_2014.mean()\n",
+ "delta = mean_2014 - mean_2011\n",
+ "delta_pct = 100 * delta / mean_2011\n",
+ "\n",
+ "print(f\"lag_30d - moyenne 2011 (train) : {mean_2011:10.3f} kWh (n = {len(lag_2011):,})\")\n",
+ "print(f\"lag_30d - moyenne 2014 (prod) : {mean_2014:10.3f} kWh (n = {len(lag_2014):,})\")\n",
+ "print(f\"écart 2014 - 2011 : {delta:+10.3f} kWh ({delta_pct:+.1f} %)\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "7a72975c",
+ "metadata": {
+ "execution": {
+ "iopub.execute_input": "2026-07-25T08:08:36.284002Z",
+ "iopub.status.busy": "2026-07-25T08:08:36.283859Z",
+ "iopub.status.idle": "2026-07-25T08:08:36.616584Z",
+ "shell.execute_reply": "2026-07-25T08:08:36.615737Z"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3kAAAHqCAYAAAC5nYcRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAldNJREFUeJzs3Xl8TNf/P/DXTJLJZJ1EIhshsdRe0SAJipKKVkvaqtDW1qDUHtraKUVRS5VKtYqvVinVVFURobXFFlSJfUuJySJksi+T+/sjv9yPkckykbnDeD0fj3lcc+65933uZCbynnPuOTJBEAQQERERERGRWZCbugFERERERERUfZjkERERERERmREmeURERERERGaESR4REREREZEZYZJHRERERERkRpjkERERERERmREmeURERERERGaESR4REREREZEZYZJHRERERERkRpjkET2DZs2aBZlMJkmszp07o3PnzuLzv/76CzKZDFu3bpUk/qBBg+Dj4yNJrMoouf6//vqrWs538+ZNyGQyrFu3rlrO9zSQ8v37NPnvv/+gVCpx+PBhSeI9znvv3r17sLOzw86dO6u/Yc+ozMxMuLm54ccffzR1U3SY8vP66P8/xjBp0iQEBAQYNQZRVTDJI3rKrVu3DjKZTHwolUp4eXkhJCQEy5cvR0ZGRrXESUxMxKxZs3DmzJlqOV91epLb9qw4cOAAevbsCW9vbyiVSnh4eKB79+5lJhxHjhxBhw4dYGtrCw8PD4wZMwaZmZkSt/p/tm3bhrCwMNSrVw+2trZo1KgRJkyYgAcPHuitv337drzwwgtQKpWoU6cOZs6cicLCQp06d+/exaRJk/DSSy/BwcGh3OR+z549CA8PR/PmzWFhYVGlLyZmz56NgIAAtG/fXizbuHEjli1bZvC5jM3FxQVDhgzB9OnTTd0UAMCJEycwatQoNGvWDHZ2dqhTpw769OmDy5cv661/4cIFdO/eHfb29qhRowb69++PlJSUUvXmzp2Lnj17wt3dHTKZDLNmzapUe15++WXIZDKMGjWq0tfw5ZdfwsHBAX379q30MeYgPj4es2bNws2bN00Sf9y4cfjnn3+wfft2k8QnKguTPCIzMXv2bGzYsAGrVq3C6NGjART/59OiRQucPXtWp+60adOQk5Nj0PkTExPx6aefGpxI7dmzB3v27DHoGEOV17Zv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gr29PTp16lThOfRJT0/HtWvXypzVmcgUOFyTyEz8+eefuHjxIgoLC5GUlIR9+/YhOjoadevWxfbt28VJAfSZPXs2Dhw4gB49eqBu3bpITk7G119/jdq1a6NDhw4AihMuJycnREZGwsHBAXZ2dggICNB7T09l1KhRAx06dMDgwYORlJSEZcuWoUGDBjrLPAwZMgRbt25F9+7d0adPH1y7dg0//PBDqbWgDGnb66+/jpdeeglTp07FzZs30bJlS+zZswe//fYbxo0bV+rcVTV06FCsWLECAwYMQFxcHDw9PbFhw4ZSQ67kcjm+++47vPLKK2jWrBkGDx6MWrVq4c6dO9i/fz8cHR3x+++/Vzquo6MjOnbsiIULF6KgoAC1atXCnj179H7LP2vWLOzZswft27fHiBEjxOS3efPmOHPmjEHX+8orr6B27doICAiAm5sbEhISsHbtWiQmJur8QQUUL5/Rrl07dOrUCcOGDcPt27exePFidOvWDd27dxfrffrpp9i1axdefPFFfPjhh+IfY82aNcPZs2crbJMhSyh0794d169fx8cff4xDhw7h0KFD4j53d3e8/PLL4vNFixahZ8+e6NatG/r27Ytz585hxYoVGDJkSKlv8j/77DMAxcuUAMXJbMm5p02bJtY7e/Ystm/fDqA40U5PTxePbdmyJV5//fVy29+rVy9MnToVGo1GZ/1Bf39/bN68GREREWjTpg3s7e0rPNdrr72G2bNnY/DgwWjXrh3+/fdf/Pjjj6V6g6tDdHQ0Xn/99Ur3xoSFhWHGjBlQKpUIDw/XubcqIyMDtWvXRu/evdGyZUvY29tj7969OHHiBBYvXlzueSdMmIDt27fj9ddfR1pams66ogDw3nvvif+eMmUKtmzZgpdeegljx45FZmYmFi1ahBYtWpSafGrDhg24desWsrOzAQAHDhwQf679+/dH3bp10bhxYzRu3Fhvu3x9fREaGlrh69KrVy9s2LABly9fFu+3K6FUKrFr1y4MHDgQAQEB+PPPP/HHH39gypQplVouZdGiRXjllVcQFBSE8PBwcQkFlUql87ky5PM6ZMgQfP755xgyZAhat26NAwcOiL2LD5s3bx727Nkj/q5o0qQJ7t69iy1btuDQoUNwcnKCn58fLCwssGDBAqSnp8Pa2hpdunQRv1h62LBhw/DNN99g0KBBiIuLg4+P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+zZu376NX375BeHh4XjzzTeru41ERERERERUSVVaQiEyMhITJ07EO++8g4KCguITWVoiPDwcixYtqtYGEhERERERUeVVKcmztbXF119/jUWLFuHatWsAgPr168POzq5aG0dE9FgslUDNxsVbCVhbytHQzR7WllUaJEFERERULaqU5JWws7PD888/X11tISKqXm6NgZHHJAvX0N0B0RGdJItHREREpA+/biYiIiIiIjIjTPKIyHzdPQvMq128lcD5xHQ0n7kb5xPTJYlHREREpA+TPCIyX0IRkJ9RvJUinABk5hVCECQJR0RERKTXY92TR0RkDF0TllfhqMhqbwcRERHR04g9eURERERERGaESR4REREREZEZYZJHRObL9Tlg2N/FWwnUr2mPHaM7oH5Ne0niEREREenDe/KIyHwpbAEvP8nC2Sgs0LyWSrJ4RERERPqwJ4+IzNeD/4A/JhRvJXDnQQ6mR53DnQc5ksQjIiIi0odJHhGZr+x7wInvircSuJ+Vjw1Hb+F+Vr4k8YiIiIj0YZJHRERERERkRpjkERERERERmRFOvEJEZmHuH/GlyjyybiAcwJpDN6C2U+jsm9qjqUQtIyIiIpIWe/KIyGxlWTnjmHtfZFk5SxLPxV6B8A6+cLFXVFyZiIiIyEjYk0dEZitD4Ya9dcZKFs9TZYPpr7GHkIiIiEyLPXlEZLastNmolfkvrLTZksTLyitE3K37yMorlCQeERERkT5M8ojIbLnk/odBF4bBJVeadfJupGbhrVVHcCM1S5J4RERERPowySMiIiIiIjIjTPKIiIiIiIjMCJM8IiIiIiIiM8Ikj4jMVpHMAlmWTiiSWUgSz0IuQw07BSzkMkniEREREenzRCR5K1euhI+PD5RKJQICAnD8+PFy62/ZsgWNGzeGUqlEixYtsHPnTp39giBgxowZ8PT0hI2NDYKDg3HlyhVx/19//QWZTKb3ceLECQDAzZs39e4/evRo9b8ARGQUybYNsKzVn0i2bSBJvCaejjg1/WU08XSUJB4RERGRPiZfJ2/z5s2IiIhAZGQkAgICsGzZMoSEhODSpUtwc3MrVf/IkSPo168f5s+fj9deew0bN25EaGgoTp06hebNmwMAFi5ciOXLl2P9+vXw9fXF9OnTERISgvj4eCiVSrRr1w53797VOe/06dMRExOD1q1b65Tv3bsX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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Histogrammes en densité (les effectifs 2011/2014 diffèrent). Bornes communes ; on tronque\n",
+ "# la queue de distribution (très étalée) au 99e centile pour la lisibilité.\n",
+ "x_max = float(np.quantile(pd.concat([lag_2011, lag_2014]), 0.99))\n",
+ "bins = np.linspace(0, x_max, 60)\n",
+ "\n",
+ "plt.figure(figsize=(9, 5))\n",
+ "plt.hist(lag_2011, bins=bins, density=True, alpha=0.55, label=f\"2011 (train) - moy = {mean_2011:.1f}\")\n",
+ "plt.hist(lag_2014, bins=bins, density=True, alpha=0.55, label=f\"2014 (prod) - moy = {mean_2014:.1f}\")\n",
+ "plt.axvline(mean_2011, color=\"C0\", linestyle=\"--\", linewidth=1)\n",
+ "plt.axvline(mean_2014, color=\"C1\", linestyle=\"--\", linewidth=1)\n",
+ "plt.xlabel(\"lag_30d (kWh)\")\n",
+ "plt.ylabel(\"densité\")\n",
+ "plt.title(\"Distribution de lag_30d : 2011 (train) vs 2014 (production)\")\n",
+ "plt.legend()\n",
+ "plt.tight_layout()\n",
+ "plt.show()\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "38fa0900",
+ "metadata": {},
+ "source": [
+ "**Lecture rapide.** On compare visuellement les deux distributions et l'écart des moyennes.\n",
+ "Cette approche mono-feature est un premier indice, mais elle reste partielle (une seule variable,\n",
+ "pas de test statistique, pas de vue sur les autres features ni sur la performance). Réponses\n",
+ "détaillées 1.1 - 1.4 dans `SYNTHESE_TP05.md`.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6296ac74",
+ "metadata": {},
+ "source": [
+ "## Partie 2 - Analyse avec un outil de monitoring (Evidently)\n",
+ "\n",
+ "On génère un **rapport de dérive** Evidently (`DataDriftPreset`) comparant les distributions de\n",
+ "**2011 (référence)** et **2014 (courant)** sur l'ensemble des features du modèle. Evidently choisit\n",
+ "automatiquement un test statistique par feature (pour de grands échantillons : *Wasserstein distance\n",
+ "normalisée*, seuil 0.1) et conclut feature par feature puis au niveau du dataset.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "239dee1e",
+ "metadata": {
+ "execution": {
+ "iopub.execute_input": "2026-07-25T08:08:36.618548Z",
+ "iopub.status.busy": "2026-07-25T08:08:36.618427Z",
+ "iopub.status.idle": "2026-07-25T08:08:41.584708Z",
+ "shell.execute_reply": "2026-07-25T08:08:41.583602Z"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "reference 2011 : (200000, 5) | current 2014 : (200000, 5)\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rapport HTML enregistré : tp05_evidently_drift_2011_vs_2014.html\n"
+ ]
+ }
+ ],
+ "source": [
+ "from evidently.report import Report\n",
+ "from evidently.metric_preset import DataDriftPreset\n",
+ "\n",
+ "N_SAMPLE = 200_000 # échantillon (seed fixe) : distributions représentatives + temps de calcul maîtrisé\n",
+ "\n",
+ "reference = df.loc[df[\"year\"] == 2011, DRIFT_FEATURES].dropna()\n",
+ "current = df.loc[df[\"year\"] == 2014, DRIFT_FEATURES].dropna()\n",
+ "# reset_index : Evidently trace les distributions sur un index simple ; on retire le\n",
+ "# MultiIndex (individual, timestamp) qui n'est pas pertinent pour la comparaison de dérive.\n",
+ "reference = reference.sample(n=min(N_SAMPLE, len(reference)), random_state=RANDOM_STATE).reset_index(drop=True)\n",
+ "current = current.sample(n=min(N_SAMPLE, len(current)), random_state=RANDOM_STATE).reset_index(drop=True)\n",
+ "print(\"reference 2011 :\", reference.shape, \"| current 2014 :\", current.shape)\n",
+ "\n",
+ "report = Report(metrics=[DataDriftPreset()])\n",
+ "report.run(reference_data=reference, current_data=current)\n",
+ "report.save_html(\"tp05_evidently_drift_2011_vs_2014.html\")\n",
+ "print(\"Rapport HTML enregistré : tp05_evidently_drift_2011_vs_2014.html\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "f8559f73",
+ "metadata": {
+ "execution": {
+ "iopub.execute_input": "2026-07-25T08:08:41.586885Z",
+ "iopub.status.busy": "2026-07-25T08:08:41.586772Z",
+ "iopub.status.idle": "2026-07-25T08:08:41.611360Z",
+ "shell.execute_reply": "2026-07-25T08:08:41.610742Z"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Dérive globale du dataset (dataset_drift) : True\n",
+ "Features en dérive : 5 / 5 (100%)\n",
+ "\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "