feature(workshop): add workshop13 scaffold, solution will be added later

This commit is contained in:
2026-06-11 12:28:44 +02:00
parent e79f047f17
commit 353ec74ba0
6 changed files with 18823 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
# Workshop 13 — Stabilitätsvergleich von Klassifikatoren (Kreuzvalidierung)
> CAS Practical Machine Learning · Supervised Learning · Lektion 5 (Foliensatz 14, Folie 12)
> Zeit: 30'
## Aufgabenstellung
Vergleiche **alle bisher bekannten Klassifikatoren** in Bezug auf deren **Stabilität**
unter Anwendung von Kreuzvalidierung.
- für die Klassifikatoren jeweils **Default-Parametrisierung** verwenden
- für die Kreuzvalidierung `sklearn.model_selection.cross_val_score` einsetzen
## Kernidee: was heisst „Stabilität"?
`cross_val_score` liefert einen Score **pro Fold**. Aus diesen Werten:
- **mean** → durchschnittliche Performance
- **std** → **Stabilität**: wie stark schwankt die Performance über die Folds (= über
verschiedene Datenaufteilungen). **Kleine std = stabiler.**
Ziel des Vergleichs: welcher Klassifikator liefert nicht nur gute, sondern auch
**verlässliche** (wenig streuende) Ergebnisse?
## Datensatz
Klassifikations-Datensatz aus den bisherigen Workshops (analog WS6, via
`bfh_cas_pml.prep_data` auf dem aufbereiteten CSV in `data/`).
> Hinweis: `cross_val_score` übernimmt das Splitten selbst → **kein** manueller
> Train-Test-Split nötig. Es genügt, `X` und `y` zu übergeben (z.B. `X_train`, `y_train`).
## Ordnerstruktur
```
workshop13
├── data
│ └── <classification_data>.csv # aus Kursmaterial
├── devenv.lock
├── devenv.nix
├── README.md
├── stability_boxplot.png # Output
└── src
├── bfh_cas_pml.py # aus Kursmaterial
└── crossvalidation.py # Lösung
```
## Vorgehen
1. Daten laden (`X`, `y`).
2. Alle bekannten Klassifikatoren mit **Default-Parametern** in einem `dict` sammeln.
3. Pro Klassifikator `cross_val_score(clf, X, y, cv=kfold)` rechnen.
4. `mean` und `std` je Klassifikator gegenüberstellen (nach `std` sortieren).
5. Boxplot aller Klassifikatoren nebeneinander → Streuung sichtbar machen.
## Erkenntnisse / offene Punkte
> hier eigene Beobachtungen festhalten
- Stabilster Klassifikator (kleinste std):
- Bester Mittelwert (mean):
- Trade-off mean vs. std:
- Welche Klassifikatoren brauchen `random_state`, welche nicht?
## Quellen
- Foliensatz 14 (Validierung), V. Vogel, TI BFH — Folien 1012
- Notizen: `../../L5_Notizen.md` (Abschnitt „Praxis: Kreuzvalidierung")