feat(ml,#12455): enrichir 2.6-Clustering-KMeans-PCA — DBSCAN + hierarchique au-dela de KMeans - #12652
Conversation
…chique au-dela de KMeans Volet 2 de #12455 : apres la section 7 (t-SNE/UMAP), le notebook ne montrait que KMeans. Ajout de 4 sections + 3 exercices pour couvrir les familles de clustering qui suivent la FORME, pas seulement la "boule": - §8 : forme non convexe (demi-lunes, anneaux) -> KMeans echoue structurellement (frontiere de Voronoi droite = cluster convexe) - §9 : DBSCAN — densite, sensibilite a eps, labels -1 (outliers) - §10 : hierarchique agglomeratif + dendrogramme ; lien simple vs complet - §11 : guide de choix KMeans / DBSCAN / hierarchique Mesure honnete (Prong-B) : KMeans ARI 0.48 (demi-lunes) / ~0 (anneaux) ; DBSCAN eps=0.3 ARI 0.99/1.00 mais fragile (eps 0.2 -> fragmente, 0.4 -> fusionne) ; hierarchique lien simple ARI 1.00/1.00 (complete rate les anneaux). Le StandardScaler avant tout clustering a distance est un point pedagogique central (DBSCAN/hierarchique mesurent des distances). Re-exec via papermill (49/49, exit 0), 0 erreur volontaire (C.1), execution_count + outputs coherents (C.2), H.3 OK, chemins machine anonymises via strip_machine_paths.py (<USER_PATH>). See #12455 (livraison du volet 2/3). Co-authored-by: po-2024-worker <po-2024-worker@users.noreply.github.com> Co-authored-by: po-2024 self-bot <po-2024@jsboige-CoursIA>
jsboige
left a comment
There was a problem hiding this comment.
[Hermes] Review vs issue #12455 (méthode matche : DBSCAN + hiérarchique dans 2.6) :
Vérifié :
- Exécution réelle : papermill 2026-08-23T19:13Z, exec counts 15→20 séquentiels, durées non triviales (t-SNE 5.5s vs 4.0s ancien — cohérent re-run).
- Cohérence outputs/code : sweep eps (0.2→7 clusters/ARI 0.50, 0.3→2/0.99, 0.4→1/0.00) puis choix final eps=0.3 → ARI 0.99/1.00 affiché = exactement ce que le sweep prédit. Contraste linkage single (ARI 1.00) vs complete (0.01) pédagogiquement correct pour les anneaux.
- Dépendances : umap-learn optionnel avec garde d'import + message — bon pattern.
- Déletions (164) : 141/163 = metadata re-execution uniquement, pas de contenu supprimé.
- Security scan : clean.
Mineur (non bloquant) : l'exercice 5 (bon_eps = None) est présent mais la section dendrogram (10) n'a pas d'exercice associé — cohérent avec 2.6 si le plan exercices est ailleurs.
LGTM contenu. Approve implicite — self-review cap: COMMENT only.
|
✅ No render volume delta signal (notebooks modified vs merge-base preserve >= 50% of base rendered output per MIME family). See |
|
✅ No fragmented stream outputs detected. See |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
MD hierarchy drift -- 36bfeafCette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
|
No new degraded-mode confessions in modified notebooks (vs merge-base). Inherited confessions are tolerated by design (frozen-inheritance). Detector: |
|
No new ASCII flowchart introductions in modified notebooks (vs merge-base). Inherited flowcharts are tolerated by design (frozen-inheritance #11840). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
Constat navlink-fantome (réponse à po-2025 CORRECTION msg-hy6hgx 2026-08-24T02:28Z). Le rouge Pas de Cette PR reste prête pour merge — Grain: aucun (constat META, 0 ligne modifiee). prev: DEEP/genai #12710 (livré c.1331p434). |
MD hierarchy drift -- 3efeeeeCette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
Grain: MED/notebook-python — lane myia-po-2024:CoursIA-2 — prev: MED/notebook-python #12577
Résumé
Volet 2/3 de #12455. Le notebook
2.6-Clustering-KMeans-PCA.ipynbne montrait que KMeans — le clustering « en boule ». Trois sections (8-10) + un guide de choix (11) ajoutent les familles qui suivent la forme, plus 3 exercices. Chaque résultat est mesuré, pas affirmé (Prong-B : le cas discriminant est vérifié, le folklore « KMeans échoue » est remplacé par des chiffres réels).eps, labels-1(outliers)Mesure honnête (Prong-B)
Ton cas de démonstration est choisi parce qu'il discrimine, et les chiffres sont ceux du run (pas un pitch) :
epsdocumentée (0.2→fragmenté, 0.4→fusionné)epsdépend de l'unité de chaque axe).Validation
execution_count+outputscohérents (C.2).raise NotImplementedError/assert False/1/0(les 3 exercices sont des stubs# TODO etudiant+print("Exercice N a completer ...")).check_null_exec.py→ 1 notebook OK (aucune cellule code null+sans output).check_papermill_ratchet.py→ 0 régression.n_jobs(cellule existante, déjà présent surmainavec<USER_PATH>) — anonymisé viastrip_machine_paths.py --apply(outil sanctionné catégorie A, pas un hand-edit).Scope
Un seul fichier :
MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.6-Clustering-KMeans-PCA.ipynb(+760/−164). Catalogue byte-identique à main (aucunCOURSE_CATALOG*touché). Volets 1 et 3 de #12455 restent à livrer.Diagnostics
## Diagnostic dérive: l'output du run correspond à la prose (G.9 — la prose a été alignée sur les valeurs mesurées pré-commit, p.ex. KMeans demi-lunes0.26→0.48après scaling).See #12455 · Part of #12455