Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@
"\n",
"**Tout le conditionnement vit dans le réseau et dans la boucle d'échantillonnage — pas dans la théorie.** C'est le point qui surprend quand on ouvre une bibliothèque : `guidance_scale` n'apparaît nulle part dans l'équation du DDPM. Elle n'y a jamais été.\n",
"\n",
"On fixe le schedule **linéaire** : la question « linéaire ou cosinus » a été instrumentée dans le 3.6c, et elle reste sous-déterminée par le choix du noyau MMD (suivi ouvert, issue #16137). Reprendre ce débat ici mélangerait deux questions ; il est donc tenu à l'écart, et signalé.\n"
"On fixe le schedule **linéaire** : la question « linéaire ou cosinus » a été instrumentée dans le 3.6c, puis tranchée par un protocole de mesure (5 bandes passantes, 4 seeds, 2 budgets) dont le verdict est `INCONCLUSIVE` : le rang dépend du noyau. Reprendre ce débat ici mélangerait deux questions ; il est donc tenu à l'écart, et signalé.\n"
]
},
{
Expand Down Expand Up @@ -1379,10 +1379,10 @@
"\n",
"- [3.6](3.6-Modeles-Generatifs.ipynb) — panorama (VAE, GAN, flows, diffusion, EBM) en NumPy pur\n",
"- [3.6b](3.6b-Modeles-Generatifs-PyTorch.ipynb) — le versant framework, mêmes cibles, mêmes métriques\n",
"- `3.6c` — le DDPM inconditionnel, schedules comparés\n",
"- `3.6d` — le même objet en temps continu (score, Langevin, Euler-Maruyama)\n",
"- [3.6c](3.6c-Modeles-Generatifs-Diffusion-from-scratch.ipynb) — le DDPM inconditionnel, schedules comparés\n",
"- [3.6d](3.6d-Modeles-Generatifs-Score-SDE-from-scratch.ipynb) — le même objet en temps continu (score, Langevin, Euler-Maruyama)\n",
"\n",
"Le pendant industriel — `diffusers` avec `DDPMScheduler` et `UNet2D` — est l'objet du bloc B de l'issue #16056.\n",
"Le pendant industriel — `diffusers` avec `DDPMScheduler` et `UNet2D` — est livré par le [3.10](3.10-Modeles-Generatifs-Diffusion-SOTA.ipynb).\n",
"\n",
"Le chapitre « Guidance » de Luo (2022, *Understanding Diffusion Models: A Unified Perspective*, p. 20-22) creuse l'arbitrage derrière le CFG de ce notebook : un modèle conditionnel peut apprendre à ignorer son conditionnement, le classifier guidance l'objective au prix de la diversité, et le classifier-free guidance en est la variante sans classifieur.\n"
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"source": [
"# 3.9g — Comparatif compression : from scratch (Bloc A) vs écosystème (Bloc B)\n",
"\n",
"Ce notebook est le **capstone** de la série compression (issue #16060, bloc 7). Les six notebooks\n",
"Ce notebook est le **capstone** de la série compression (issue #16060, bloc 7). Les sept notebooks\n",
"précédents ont construit chaque méthode isolée :\n",
"\n",
"- **3.9 / 3.9a** : quantization FP16/BF16 puis INT8 dynamique **à la main** (numpy, scale + zéro-point)\n",
Expand Down Expand Up @@ -1631,7 +1631,7 @@
"\n",
"Références croisées : 3.9 (FP from scratch), 3.9a (INT8 from scratch), 3.9b/3.9c (pruning\n",
"from scratch), 3.9d (distillation), 3.9e (quantization torch.ao — le x4,0 FX statique),\n",
"3.9f (pruning torch.nn.utils — allocation globale contre random). Hors scope, assume par\n",
"3.9f (pruning torch.nn.utils — allocation globale contre locale/uniforme). Hors scope, assume par\n",
"l'issue : GPTQ/AWQ sur LLM (FT-02 QLoRA), NAS, multi-teacher."
]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@
"tags": []
},
"source": [
"**Navigation** : [Index](../../../../README.md) | [<< Lab4](../Lab4-DataWrangling/Lab4-DataWrangling.ipynb) | [Lab6 >>](../Lab6-First-Agent/Lab6-First-Agent.ipynb)\n",
"# Lab 5 - De la Visualisation au Machine Learning"
"# Lab 5 - De la Visualisation au Machine Learning\n",
"\n",
"**Navigation** : [Lab 4 <<](../Lab4-DataWrangling/Lab4-DataWrangling.ipynb) | [Index](../../README.md) | [Lab 6 >>](../Lab6-First-Agent/Lab6-First-Agent.ipynb)\n"
]
},
{
Expand All @@ -32,10 +33,6 @@
"tags": []
},
"source": [
"## Lab 5 - De la Visualisation au Machine Learning\n",
"\n",
"**Navigation** : [Lab 4 <<](../Lab4-DataWrangling/Lab4-DataWrangling.ipynb) | [Index](../../README.md) | [>> Lab 6](../Lab6-First-Agent/Lab6-First-Agent.ipynb)\n",
"\n",
"## Objectifs d'apprentissage\n",
"\n",
"À la fin de ce laboratoire, vous saurez :\n",
Expand Down Expand Up @@ -513,51 +510,14 @@
"tags": []
},
"source": [
"**Interprétation du score :** Le score de précision (accuracy) nous indique le pourcentage de prédictions correctes que notre modèle a faites sur l'ensemble de test. Exécutez les cellules ci-dessus pour obtenir le score, puis interprétez-le :\n",
"- **> 0.7** : le modèle distingue bien les catégories à partir du prix et de la quantité.\n",
"- **0.4-0.7** : les features choisies donnent des résultats mitigés.\n",
"- **< 0.4** : le prix et la quantité seuls ne suffisent pas à différencier les catégories de produits."
]
},
{
"cell_type": "markdown",
"id": "c111b9db",
"metadata": {
"papermill": {
"duration": 0.004496,
"end_time": "2026-05-15T02:45:56.593251+00:00",
"exception": false,
"start_time": "2026-05-15T02:45:56.588755+00:00",
"status": "completed"
},
"tags": []
},
"source": [
"## Conclusion"
]
},
{
"cell_type": "markdown",
"id": "e1d050cf",
"metadata": {
"papermill": {
"duration": 0.011949,
"end_time": "2026-05-15T02:45:56.605200+00:00",
"exception": false,
"start_time": "2026-05-15T02:45:56.593251+00:00",
"status": "completed"
},
"tags": []
},
"source": [
"Félicitations ! Vous avez acquis deux compétences fondamentales en Data Science :\n",
"1. **L'analyse exploratoire par la visualisation**, pour comprendre vos données.\n",
"2. **La modélisation prédictive**, pour utiliser vos données afin de faire des prédictions.\n",
"**Interprétation du score :** la cellule ci-dessus imprime la précision mesurée sur l'ensemble de test — ici **1.00**. C'est le moment de se méfier plutôt que de se réjouir.\n",
"\n",
"**Lien avec les agents d'IA :**\n",
"Ce processus que nous avons mené manuellement peut être entièrement automatisé par un agent d'IA. Imaginez pouvoir demander simplement : \"Analyse les ventes du trimestre dernier, identifie les 3 meilleures catégories de produit, et construis un modèle pour prédire la catégorie des nouveaux produits.\"\n",
"`transactions.csv` est minuscule (la cellule de préparation en affiche la taille) : quatre exemples à l'entraînement, deux au test. Une précision parfaite sur deux exemples ne mesure rien — elle dit qu'un modèle à peine contraint a bien classé les deux points qu'on lui a laissés, pas qu'il « distingue les catégories ». La leçon de méthode de cette étape est là : un score ne se lit qu'avec le volume de test qui le porte.\n",
"\n",
"Pour ce faire, l'agent utiliserait des **outils** (tools) qui encapsuleraient la logique que nous venons d'écrire avec `pandas`, `seaborn` et `sklearn`. Le rôle de l'agent est d'orchestrer ces outils pour répondre à la demande de l'utilisateur."
"Les repères ci-dessous décrivent ce que le score signifierait **sur un ensemble de test de taille suffisante** :\n",
"- **> 0.7** : le modèle distingue bien les catégories à partir du prix et de la quantité.\n",
"- **0.4-0.7** : les features choisies donnent des résultats mitigés.\n",
"- **< 0.4** : le prix et la quantité seuls ne suffisent pas à différencier les catégories de produits.\n"
]
},
{
Expand All @@ -574,12 +534,9 @@
"tags": []
},
"source": [
"## Exemple guidé\n",
"\n",
"À vous de pratiquer la visualisation et la classification binaire !\n",
"### Exercice 1 : Prix moyen par catégorie et classification binaire\n",
"\n",
"***\n",
"**Retour au sommaire** : [Index ML](../../../../README.md)\n"
"À vous de pratiquer la visualisation et la classification binaire. La cellule ci-dessous contient les deux volets de l'exercice — complétez-la.\n"
]
},
{
Expand Down Expand Up @@ -643,14 +600,14 @@
"source": [
"### Exercice 2 : Analyse de la distribution des prix\n",
"\n",
"La comprehension de la distribution des variables est essentielle avant de construire un modèle. Vous allez créer un histogramme et un boxplot pour analyser la repartition des prix unitaires par catégorie.\n",
"La compréhension de la distribution des variables est essentielle avant de construire un modèle. Vous allez créer un histogramme et un boxplot pour analyser la repartition des prix unitaires par catégorie.\n",
"\n",
"**Objectif** : Visualiser la distribution de `prix_unitaire` avec un histogramme global et un boxplot par catégorie.\n",
"\n",
"**Indices** :\n",
"- Utilisez `sns.histplot()` avec le paramètre `bins` pour l'histogramme\n",
"- Utilisez `sns.boxplot()` avec `x='catégorie'` et `y='prix_unitaire'` pour le boxplot\n",
"- Utilisez `plt.subplots(1, 2, figsize=(14, 5))` pour afficher les deux graphiques cote a cote"
"- Utilisez `plt.subplots(1, 2, figsize=(14, 5))` pour afficher les deux graphiques côte à côte"
],
"metadata": {}
},
Expand Down Expand Up @@ -698,17 +655,17 @@
"cell_type": "markdown",
"id": "8799361b",
"source": [
"### Exercice 3 : Evaluation avec la matrice de confusion\n",
"### Exercice 3 : Évaluation avec la matrice de confusion\n",
"\n",
"L'accuracy seule ne suffit pas toujours a evaluer un modèle de classification. Vous allez utiliser la matrice de confusion et le rapport de classification pour obtenir une vue detaillee des performances de votre modèle par catégorie.\n",
"L'accuracy seule ne suffit pas toujours à évaluer un modèle de classification. Vous allez utiliser la matrice de confusion et le rapport de classification pour obtenir une vue détaillée des performances de votre modèle par catégorie.\n",
"\n",
"**Objectif** : Afficher la matrice de confusion et le rapport de classification du modèle `LogisticRegression` entraine precedemment.\n",
"**Objectif** : Afficher la matrice de confusion et le rapport de classification du modèle `LogisticRegression` entraîné précédemment.\n",
"\n",
"**Indices** :\n",
"- Importez `confusion_matrix` et `classification_report` depuis `sklearn.metrics`\n",
"- Utilisez `confusion_matrix(y_test, y_pred)` pour obtenir la matrice\n",
"- Utilisez `sns.heatmap()` pour visualiser la matrice de confusion\n",
"- Appelez `classification_report(y_test, y_pred)` pour le rapport detaille"
"- Appelez `classification_report(y_test, y_pred)` pour le rapport détaillé"
],
"metadata": {}
},
Expand Down Expand Up @@ -759,11 +716,11 @@
"cell_type": "markdown",
"id": "e9fe6ce9",
"source": [
"### Exercice 4 : Courbe ROC et evaluation visuelle du modèle\n",
"### Exercice 4 : Courbe ROC et évaluation visuelle du modèle\n",
"\n",
"L'accuracy et la matrice de confusion donnent une vision globale, mais la courbe ROC (Receiver Operating Characteristic) permet de visualiser le compromis entre le taux de vrais positifs et le taux de faux positifs a différents seuils de decision. Vous allez tracer la courbe ROC pour la classification binaire (chiffre d'affaires eleve vs. bas).\n",
"\n",
"**Objectif** : Construire une cible binaire (`ca_eleve` = 1 si `chiffre_affaires > 50`), entrainer un `LogisticRegression`, puis tracer la courbe ROC avec `sklearn.metrics.roc_curve`.\n",
"**Objectif** : Construire une cible binaire (`ca_eleve` = 1 si `chiffre_affaires > 50`), entraîner un `LogisticRegression`, puis tracer la courbe ROC avec `sklearn.metrics.roc_curve`.\n",
"\n",
"**Indices** :\n",
"- Créez la cible binaire : `df_clean['ca_eleve'] = (df_clean['chiffre_affaires'] > 50).astype(int)`\n",
Expand Down Expand Up @@ -830,6 +787,47 @@
}
]
},
{
"cell_type": "markdown",
"id": "c111b9db",
"metadata": {
"papermill": {
"duration": 0.004496,
"end_time": "2026-05-15T02:45:56.593251+00:00",
"exception": false,
"start_time": "2026-05-15T02:45:56.588755+00:00",
"status": "completed"
},
"tags": []
},
"source": [
"## Conclusion"
]
},
{
"cell_type": "markdown",
"id": "e1d050cf",
"metadata": {
"papermill": {
"duration": 0.011949,
"end_time": "2026-05-15T02:45:56.605200+00:00",
"exception": false,
"start_time": "2026-05-15T02:45:56.593251+00:00",
"status": "completed"
},
"tags": []
},
"source": [
"Félicitations ! Vous avez acquis deux compétences fondamentales en Data Science :\n",
"1. **L'analyse exploratoire par la visualisation**, pour comprendre vos données.\n",
"2. **La modélisation prédictive**, pour utiliser vos données afin de faire des prédictions.\n",
"\n",
"**Lien avec les agents d'IA :**\n",
"Ce processus que nous avons mené manuellement peut être entièrement automatisé par un agent d'IA. Imaginez pouvoir demander simplement : \"Analyse les ventes du trimestre dernier, identifie les 3 meilleures catégories de produit, et construis un modèle pour prédire la catégorie des nouveaux produits.\"\n",
"\n",
"Pour ce faire, l'agent utiliserait des **outils** (tools) qui encapsuleraient la logique que nous venons d'écrire avec `pandas`, `seaborn` et `sklearn`. Le rôle de l'agent est d'orchestrer ces outils pour répondre à la demande de l'utilisateur."
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand All @@ -842,6 +840,18 @@
"4. J. W. Tukey, *Exploratory Data Analysis*, Addison-Wesley, 1977. Cadre de l'EDA (Étape 2) — référence détaillée au Lab 4.\n"
],
"id": "cell-d1c9f249"
},
{
"cell_type": "markdown",
"id": "cell-lab5-retour",
"metadata": {
"tags": []
},
"source": [
"***\n",
"\n",
"**Retour au sommaire** : [Index ML](../../../../README.md) | [Journée 3](../../README.md)\n"
]
}
],
"metadata": {
Expand Down
Loading