feature: add workshop 2 jupyter notebook
This commit is contained in:
@@ -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
@@ -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
Reference in New Issue
Block a user