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 @@ -12,10 +12,10 @@ Avant d'orchestrer des agents LLM qui *écrivent* du code data science (labs Lan

| Notebook | Contenu | Durée |
|----------|---------|-------|
| [1.2-NumPy](notebooks/1.2-Manipulation_de_Donnees_avec_NumPy.ipynb) | `ndarray`, vectorisation (timing vs boucle), broadcasting, indexation/masques booléens, `axis`, `default_rng(seed)` | ~60-75 min |
| [1.3-Pandas](notebooks/1.3-Analyse_de_Donnees_avec_Pandas.ipynb) | `DataFrame`, sélection de colonnes, filtrage booléen, `merge`/`join` (4 `how=`), données manquantes (`isna`/`fillna`/`dropna`), séries temporelles (`to_datetime`, `.dt`, `resample`), `read_csv` réel | ~45 min |
| [1.2-NumPy](notebooks/1.2-Manipulation_de_Donnees_avec_NumPy.html) | `ndarray`, vectorisation (timing vs boucle), broadcasting, indexation/masques booléens, `axis`, `default_rng(seed)` | ~60-75 min |
| [1.3-Pandas](notebooks/1.3-Analyse_de_Donnees_avec_Pandas.html) | `DataFrame`, sélection de colonnes, filtrage booléen, `merge`/`join` (4 `how=`), données manquantes (`isna`/`fillna`/`dropna`), séries temporelles (`to_datetime`, `.dt`, `resample`), `read_csv` réel | ~45 min |

> **Numérotation.** La série commence à `1.2` car le `1.1` d'introduction est couvert par le [README parent](../README.md). La continuité logique est `1.2` (NumPy) → `1.3` (Pandas) → [Lab 1](../Track1-LangChain/Day1-Foundations/Labs/Lab1-PythonForDataScience.ipynb) (mise en pratique sur ventes synthétiques) → [02-ML-Cours 2.1](../02-ML-Cours/2.1-Workflow-ML.ipynb).
> **Numérotation.** La série commence à `1.2` car le `1.1` d'introduction est couvert par le [README parent](../README.md). La continuité logique est `1.2` (NumPy) → `1.3` (Pandas) → [Lab 1](../Track1-LangChain/Day1-Foundations/Labs/Lab1-PythonForDataScience.html) (mise en pratique sur ventes synthétiques) → [02-ML-Cours 2.1](../02-ML-Cours/2.1-Workflow-ML.html).

## Objectifs d'apprentissage

Expand Down
124 changes: 62 additions & 62 deletions MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/README.md

Large diffs are not rendered by default.

Large diffs are not rendered by default.

22 changes: 11 additions & 11 deletions MyIA.AI.Notebooks/ML/DataScienceWithAgents/04-Vision/README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ Série sur l'analyse multi-résolution : la transformée en ondelettes réimplé

| Notebook | Sujet | Concept-phare |
|----------|-------|---------------|
| [WS-00a-Ondelettes-1D-from-scratch](WS-00a-Ondelettes-1D-from-scratch.ipynb) | DWT orthonormale à la main (Haar, D4 par formes closes, db4 par constantes publiées), synthèse écrite comme adjoint exact, validation croisée coefficient par coefficient contre PyWavelets, profil d'énergie par échelle, débruitage par seuillage dur/doux (seuil universel MAD, sans oracle) contre passe-bas Fourier (trois cutoffs, avec oracle) sur le banc canonique Donoho-Johnstone | **Aucune base n'est universellement parcimonieuse** : l'ondelette gagne le chirp (+4,5 dB sans oracle), Fourier gagne le stationnaire (+4,8 dB avec oracle), le mixte est serré |
| [WS-00b-Ondelettes-2D-from-scratch](WS-00b-Ondelettes-2D-from-scratch.ipynb) | Transformée 2D séparable construite comme produit tensoriel du moteur 1D de WS-00a, pyramide de Mallat multi-niveaux, contrôle d'orientation sur motifs à orientation connue (marches verticale/horizontale/diagonale + constante en contrôle négatif), reconstruction parfaite et validation croisée `allclose` bande par bande contre PyWavelets, duel de compression à budget de coefficients apparié contre une DCT 8×8 | **Le pouvoir de parcimonie est conditionnel au budget** : db4 écrase la DCT 8×8 de +16,4 dB à 0,2 % de coefficients retenus, mais l'écart tombe à ~0,2 dB (indiscernable) dès 5 % — l'avantage de la base multi-échelle s'évapore quand on peut se permettre plus de coefficients |
| [WS-00c-Scattering-from-scratch](WS-00c-Scattering-from-scratch.ipynb) | Transformée de scattering 2D from scratch : banc de morlets analytiques en forme close spectrale (pic unique, correction d'admissibilité, norme L²), cascade S0/S1/S2 en une passe pleine résolution, invariance L² par translation mesurée contre pixels et descripteur sans module, sélectivité d'orientation sur les marches de WS-00b, triple validation croisée contre kymatio (traduction du pipeline à filtres injectés = `allclose` rtol=1e-4 ; écart de l'écriture pleine résolution concentré sur S2 ; régime d'invariance commun à deux calibrages indépendants), classification Fashion-MNIST bornée avec test translaté ±2 px | **Le module rend la moyenne invariante** : l'écart par translation plafonne (0,73 à 8 px) là où pixels (1,14) et coefficients sans module (1,07) croissent sans borne — et à 600 images d'entraînement, le scattering complet tient 0,765 de précision sur test translaté quand les pixels s'effondrent de 0,790 à 0,425 |
| [WS-01-Denoising-SOTA](WS-01-Denoising-SOTA.ipynb) | Bloc B.5 : duel débruitage d'images (4 images canoniques × 3 sigmas × 3 graines) entre la baseline from scratch (moteur WS-00b + seuil universel MAD de WS-00a, dur/doux) et les estimateurs SOTA — VisuShrink et BayesShrink (`skimage.restoration.denoise_wavelet`), SureShrink implémenté à la main (minimisation du risque SURE en O(n log n), validée contre force brute) sur les coefficients `pywt` | **À transformée identique (db4, parité `allclose`), l'écart de débruitage vient du seuil, pas du moteur** : BayesShrink adaptatif par sous-bande gagne **+2,2 à +3,0 dB** sur le seuil universel global à chaque régime de bruit ; VisuShrink (packaging lib du même universel doux) colle à la baseline from scratch à 0,2 dB près |
| [WS-02-Scattering-SOTA](WS-02-Scattering-SOTA.ipynb) | kymatio (backend PyTorch, corpus batché en un tenseur) contre le moteur from-scratch de WS-00c repris à l'identique — même corpus (Fashion-MNIST 80/classe, 600/200), même classifieur (régression logistique L2), même test translaté ±2 px ; diagnostic de conventions par table de correspondance (permutation d'orientations mesurée par corrélation, canaux S1 appariés à 0,64-0,81) ; mesure jumelle accuracy/latence/mémoire ; loi de l'échantillon testée à 400/classe ; tableau récapitulatif final A-vs-B de la série (LOC et dépendances calculés à l'exécution) | **SOTA rime avec ingénierie, pas avec justesse** : kymatio transforme ~46× plus vite (rapport de latence mesuré dans le notebook) mais, ses filtres isotropes par défaut étant moins sélectifs que les morlets anisotropes from-scratch, l'accuracy bornée leur donne raison — comprendre en Bloc A, produire en Bloc B |
| [WS-03-Synthese-Scattering-vs-ResNet](WS-03-Synthese-Scattering-vs-ResNet.ipynb) | Synthèse finale : représentation construite (scattering kymatio J=2, L=4, 1225-d) contre représentation apprise (ResNet18 pré-entraîné ImageNet, avgpool 512-d) sur le même Fashion-MNIST (1 500 train / 750 test, vrai split test torchvision), même sonde (régression logistique standardisée), même test translaté ±2 px, écart relatif de représentation mesuré sous décalage, tableau récap à quatre axes (discrimination, stabilité, coût, dimension) | **Construit et appris ne dominent pas les mêmes axes** : le scattering gagne le test propre (0,837 contre 0,811) et coûte ~28× moins cher à l'extraction (rapport relatif, tableau du notebook) sans avoir vu une seule image ; le ResNet gagne la robustesse au décalage (chute 0,060 contre 0,255, écart relatif 0,331 contre 0,425) — la frontière du *pourquoi du from scratch / quand du SOTA* se lit axe par axe, pas en un vainqueur |
| [WS-00a-Ondelettes-1D-from-scratch](WS-00a-Ondelettes-1D-from-scratch.html) | DWT orthonormale à la main (Haar, D4 par formes closes, db4 par constantes publiées), synthèse écrite comme adjoint exact, validation croisée coefficient par coefficient contre PyWavelets, profil d'énergie par échelle, débruitage par seuillage dur/doux (seuil universel MAD, sans oracle) contre passe-bas Fourier (trois cutoffs, avec oracle) sur le banc canonique Donoho-Johnstone | **Aucune base n'est universellement parcimonieuse** : l'ondelette gagne le chirp (+4,5 dB sans oracle), Fourier gagne le stationnaire (+4,8 dB avec oracle), le mixte est serré |
| [WS-00b-Ondelettes-2D-from-scratch](WS-00b-Ondelettes-2D-from-scratch.html) | Transformée 2D séparable construite comme produit tensoriel du moteur 1D de WS-00a, pyramide de Mallat multi-niveaux, contrôle d'orientation sur motifs à orientation connue (marches verticale/horizontale/diagonale + constante en contrôle négatif), reconstruction parfaite et validation croisée `allclose` bande par bande contre PyWavelets, duel de compression à budget de coefficients apparié contre une DCT 8×8 | **Le pouvoir de parcimonie est conditionnel au budget** : db4 écrase la DCT 8×8 de +16,4 dB à 0,2 % de coefficients retenus, mais l'écart tombe à ~0,2 dB (indiscernable) dès 5 % — l'avantage de la base multi-échelle s'évapore quand on peut se permettre plus de coefficients |
| [WS-00c-Scattering-from-scratch](WS-00c-Scattering-from-scratch.html) | Transformée de scattering 2D from scratch : banc de morlets analytiques en forme close spectrale (pic unique, correction d'admissibilité, norme L²), cascade S0/S1/S2 en une passe pleine résolution, invariance L² par translation mesurée contre pixels et descripteur sans module, sélectivité d'orientation sur les marches de WS-00b, triple validation croisée contre kymatio (traduction du pipeline à filtres injectés = `allclose` rtol=1e-4 ; écart de l'écriture pleine résolution concentré sur S2 ; régime d'invariance commun à deux calibrages indépendants), classification Fashion-MNIST bornée avec test translaté ±2 px | **Le module rend la moyenne invariante** : l'écart par translation plafonne (0,73 à 8 px) là où pixels (1,14) et coefficients sans module (1,07) croissent sans borne — et à 600 images d'entraînement, le scattering complet tient 0,765 de précision sur test translaté quand les pixels s'effondrent de 0,790 à 0,425 |
| [WS-01-Denoising-SOTA](WS-01-Denoising-SOTA.html) | Bloc B.5 : duel débruitage d'images (4 images canoniques × 3 sigmas × 3 graines) entre la baseline from scratch (moteur WS-00b + seuil universel MAD de WS-00a, dur/doux) et les estimateurs SOTA — VisuShrink et BayesShrink (`skimage.restoration.denoise_wavelet`), SureShrink implémenté à la main (minimisation du risque SURE en O(n log n), validée contre force brute) sur les coefficients `pywt` | **À transformée identique (db4, parité `allclose`), l'écart de débruitage vient du seuil, pas du moteur** : BayesShrink adaptatif par sous-bande gagne **+2,2 à +3,0 dB** sur le seuil universel global à chaque régime de bruit ; VisuShrink (packaging lib du même universel doux) colle à la baseline from scratch à 0,2 dB près |
| [WS-02-Scattering-SOTA](WS-02-Scattering-SOTA.html) | kymatio (backend PyTorch, corpus batché en un tenseur) contre le moteur from-scratch de WS-00c repris à l'identique — même corpus (Fashion-MNIST 80/classe, 600/200), même classifieur (régression logistique L2), même test translaté ±2 px ; diagnostic de conventions par table de correspondance (permutation d'orientations mesurée par corrélation, canaux S1 appariés à 0,64-0,81) ; mesure jumelle accuracy/latence/mémoire ; loi de l'échantillon testée à 400/classe ; tableau récapitulatif final A-vs-B de la série (LOC et dépendances calculés à l'exécution) | **SOTA rime avec ingénierie, pas avec justesse** : kymatio transforme ~46× plus vite (rapport de latence mesuré dans le notebook) mais, ses filtres isotropes par défaut étant moins sélectifs que les morlets anisotropes from-scratch, l'accuracy bornée leur donne raison — comprendre en Bloc A, produire en Bloc B |
| [WS-03-Synthese-Scattering-vs-ResNet](WS-03-Synthese-Scattering-vs-ResNet.html) | Synthèse finale : représentation construite (scattering kymatio J=2, L=4, 1225-d) contre représentation apprise (ResNet18 pré-entraîné ImageNet, avgpool 512-d) sur le même Fashion-MNIST (1 500 train / 750 test, vrai split test torchvision), même sonde (régression logistique standardisée), même test translaté ±2 px, écart relatif de représentation mesuré sous décalage, tableau récap à quatre axes (discrimination, stabilité, coût, dimension) | **Construit et appris ne dominent pas les mêmes axes** : le scattering gagne le test propre (0,837 contre 0,811) et coûte ~28× moins cher à l'extraction (rapport relatif, tableau du notebook) sans avoir vu une seule image ; le ResNet gagne la robustesse au décalage (chute 0,060 contre 0,255, écart relatif 0,331 contre 0,425) — la frontière du *pourquoi du from scratch / quand du SOTA* se lit axe par axe, pas en un vainqueur |

## Feuille de route (issue #16055)

Expand Down
Loading
Loading