{"version":"2026-10-31T04-02-37Z","trained_at":"2026-10-31T04:02:37.686415+00:00","n_rows_total":2273,"feature_columns":["living_area_sqm","rooms","floor","area_per_room","energy_class_ordinal","floor_missing","rooms_missing","energy_class_missing","city","district","quarter","postal_prefix"],"cities":["berlin","hamburg","koeln","leipzig","muenchen"],"city_rows":{"berlin":852,"hamburg":489,"muenchen":333,"leipzig":319,"koeln":280},"model_type":"xgboost","model_label":"XGBoost","selection_reason":"XGBoost scored best; no change","metrics":{"cv":{"n":1818,"mae_eur":121047.25433871419,"rmse_eur":230302.45632292025,"median_ae_eur":67038.8084539632,"mape_pct":20.568507639579394,"median_ape_pct":16.328829042477093,"r2_log":0.8458592955369921,"r2_eur":0.7723339095946129},"cv_city_only":{"n":1818,"mae_eur":136820.6957615649,"rmse_eur":250502.12742967124,"median_ae_eur":79694.32072401332,"mape_pct":23.814218578466765,"median_ape_pct":19.01283154133318,"r2_log":0.8009294486136456,"r2_eur":0.7306456170986513},"holdout":{"n":455,"mae_eur":115092.83940171138,"rmse_eur":195540.2364801438,"median_ae_eur":65550.23305905069,"mape_pct":19.895468438147,"median_ape_pct":15.125761336324414,"r2_log":0.8640888357338163,"r2_eur":0.8596353067423078},"holdout_city_only":{"n":455,"mae_eur":132030.75332736416,"rmse_eur":219037.224017931,"median_ae_eur":78871.984908415,"mape_pct":23.170362664048355,"median_ape_pct":18.45885076140886,"r2_log":0.8208815397260691,"r2_eur":0.8238748149899828}}}