feature: add workshop 2 jupyter notebook

This commit is contained in:
2026-05-21 15:44:41 +02:00
parent 414c248549
commit 4768232a96
4 changed files with 20483 additions and 3 deletions
+84
View File
@@ -0,0 +1,84 @@
# Workshop 2 Feature Engineering & Datenaufbereitung
## Aufgabenstellung
Untersuchung des Melbourne Housing Datasets aus ML-Perspektive.
Erste Empfehlungen zur Datenaufbereitung formulieren.
### Zu untersuchende Punkte
- **Ungeeignete Variablen** identifizieren (von vornherein nicht für ML brauchbar)
- **Missing Values** pro Variable geeignete Strategie wählen
- **Nicht-numerische Variablen** passende Encoding-Strategie wählen
- **Anomalien** entdecken, die bereinigt werden müssen (Outlier, Inkonsistenzen, Duplikate)
- **Empfehlungen** zur Datenaufbereitung formulieren
### Zeitrahmen
90 Minuten
## Hilfsmittel der Dozentin
- `WS 02 Feature Engineering Exploration Overview.ipynb`
ermittelt Kennwerte der Variablen in einem DataFrame und stellt diese in einer Excel-Tabelle zusammen
- `pandas_profiling_melb_data.html` vorgenerierter Profiling-Report
## Vorgehen
1. **Profiling-Report sichten** (ydata-profiling) für schnellen Überblick
2. **Variablen filtern** ungeeignete Spalten markieren (z.B. IDs, Freitextfelder, zu hohe Kardinalität)
3. **Missing Values analysieren** Anteil pro Spalte, Muster (MCAR / MAR / MNAR)
4. **Kategoriale Variablen** Strategie pro Spalte festlegen
5. **Anomalien suchen** Outlier (Boxplots, z-Score, IQR), inkonsistente Werte, Duplikate
6. **Empfehlungen dokumentieren** in der Workshop-1-Tabelle ergänzen
## Theorie-Bausteine
### Missing-Value-Strategien
| Strategie | Wann geeignet |
|---|---|
| Zeile löschen | wenige Missings, MCAR |
| Spalte löschen | sehr hoher Missing-Anteil (>50%), wenig Information |
| Mean / Median imputieren | numerisch, symmetrisch / schief verteilt |
| Mode imputieren | kategorial |
| Konstanter Wert (z.B. "Unknown", 0) | kategorial mit Bedeutung "fehlt" |
| KNN / Iterative Imputation | komplexere Muster, mehr Aufwand |
| Indikator-Spalte | "fehlt" selbst ist Information (MNAR) |
### Missing-Value-Typen (Rubin)
- **MCAR** Missing Completely At Random: Fehlen unabhängig von allem
- **MAR** Missing At Random: Fehlen erklärbar durch andere beobachtete Variablen
- **MNAR** Missing Not At Random: Fehlen hängt vom fehlenden Wert selbst ab
### Encoding-Strategien für kategoriale Variablen
| Strategie | Wann geeignet |
|---|---|
| **Label-Encoding** | ordinal mit klarer Reihenfolge |
| **One-Hot-Encoding** | nominal, wenige Kategorien (<~15) |
| **Target-Encoding** | nominal, hohe Kardinalität, Vorsicht: Leakage |
| **Frequency-Encoding** | hohe Kardinalität, einfach |
| **Binary-Encoding** | hohe Kardinalität, weniger Spalten als One-Hot |
| **Embeddings** | sehr hohe Kardinalität, Deep Learning |
### Outlier-Detection
- Boxplot / IQR-Regel (1.5 × IQR)
- z-Score (|z| > 3)
- Visuell via Histogramm / Scatter
- Domain-Wissen (z.B. negativer Preis, Baujahr 1196 statt 1996)
## Struktur
```
.
├── devenv.nix
├── devenv.lock
├── devenv.yaml
├── data/
│ └── melb_data.csv
└── solution/
├── 01_skalenniveaus.md
```
File diff suppressed because it is too large Load Diff
+4 -3
View File
@@ -6,15 +6,16 @@
version = "3.12";
venv.enable = true;
venv.requirements = ''
imbalanced-learn
ipython
jupyter
jupyterlab
matplotlib
numpy
pandas
matplotlib
seaborn
scikit-learn
imbalanced-learn
seaborn
setuptools<81
statsmodels
ydata-profiling
'';
File diff suppressed because one or more lines are too long