feature(workshop): add workshop13 scaffold, solution will be added later
This commit is contained in:
@@ -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 10–12
|
||||
- Notizen: `../../L5_Notizen.md` (Abschnitt „Praxis: Kreuzvalidierung")
|
||||
Reference in New Issue
Block a user