--- title: Zürich Apartment Price Predictor emoji: 🏠 colorFrom: blue colorTo: red sdk: gradio sdk_version: 6.8.0 app_file: app.py pinned: false short_description: Machine Learning Apartment Rent Price Predictor for Zurich --- # Model Iterations Documentation ## Task: Apartment Price Prediction (Regression) --- ## Summary of Iterative Process | Iteration | Objective | Key Changes | Models Used | CV Mean R² | CV Std Dev | Test MAE (CHF) | Fit Diagnosis | |-----------|-----------|-------------|-------------|------------|------------|----------------|---------------| | **1** | Build baseline model | - Basic cleaning
- 7 numerical features
- Train-test split (80/20)
- 5-fold CV | Linear Regression
Random Forest (n_estimators=100) | 0.429 (LR)
0.441 (RF) | 0.073 (LR)
0.075 (RF) | 549.90 (LR)
553.98 (RF) | ☐ Overfitting ☑ Underfitting ☐ Good Fit | | **2** | Improve through feature engineering | - 7 new features created
- Feature scaling (Ridge)
- Hyperparameter tuning
- 5-fold CV | Ridge (alpha=10.0)
Random Forest (n_estimators=200, max_depth=15)
Gradient Boosting (n_estimators=150, max_depth=5) | 0.461 (Ridge)
0.481 (RF)
0.521 (GB) | 0.073 (Ridge)
0.070 (RF)
0.068 (GB) | 541.11 (Ridge)
544.92 (RF)
537.78 (GB) | ☐ Overfitting ☐ Underfitting ☑ Good Fit | --- ## Notes **Metric:** MAE (Mean Absolute Error), R² (5-Fold Cross-Validation) **Created Features:** - rooms_per_sqm: Raumdichte (Zimmer pro m²) - wealth_index: Wohlstandsindikator (tax_income × emp normalisiert) - is_zurich_city: Binär-Feature für Zürich Stadt (PLZ 8000-8099) - pop_emp_ratio: Bevölkerungs-Arbeitsplatz-Verhältnis - log_area: Log-Transformation der Wohnfläche - log_pop: Log-Transformation der Bevölkerung - log_tax_income: Log-Transformation des Steuereinkommens **Final Selected Features:** - area (28.7% importance) - log_area (25.0% importance) - is_zurich_city (13.0% importance) - rooms_per_sqm (12.2% importance) - rooms, log_pop, pop_dens, pop, pop_emp_ratio, log_tax_income, emp, wealth_index, tax_income, frg_pct **Final Model:** Gradient Boosting Regressor **Reason for Selection:** Best R² score (0.521) and lowest MAE (537.78 CHF). Consistent performance between CV and test set with lowest standard deviation (±67.62 CHF), indicating stable predictions.