Python · Model akwizycji
Kod
import numpy as np, pandas as pd import xgboost as xgb # Cechy mikrolokalizacji (z portfela + danych rynkowych, symulowane) features = [ 'haltedauer_jahre', # Jak długo właściciel posiada nieruchomość? 'baujahr', # Wiek budynku → presja remontowa 'letzte_sanierung_jahre', # Lata od ostatniego remontu 'eigentümer_alter_est', # Szacowany wiek (z okresu posiadania + dzielnicy) 'stadtteil_preistrend_12m',# Trend cen → zachęta do sprzedaży 'stadtteil_angebot_quote', # Ilu sąsiadów właśnie sprzedaje? 'wohnflaeche_qm', # Wielkość → wskaźnik cyklu rodzinnego 'zimmer', # Liczba pokoi → dopasowanie fazy życia 'grundstueck_qm', # Wielkość działki (potencjał podziału?) 'nachfrage_index', # Bieżący popyt na mikrorynku 'erbschaft_indikator', # Wzorzec zmiany właściciela (spadek?) 'energieeffizienz', # Słaba klasa → remont albo sprzedaż ] # Symulacja: 28 000 nieruchomości w obszarze działania # Z tego 0,8% sprzedaje się w ciągu 6 miesięcy (~1,6% obrotu rocznie, niemiecki rynek wtórny) np.random.seed(404) N = 28000 # ... (generowanie danych analogicznie do modułu 1 tej serii) # Klasyfikator XGBoost model = xgb.XGBClassifier( n_estimators=350, max_depth=6, learning_rate=0.05, scale_pos_weight=124, # Silna nierównowaga klas eval_metric='aucpr', random_state=42 ) print(f"Nieruchomości w obszarze: {N:,}") print(f"Oczekiwane sprzedaże (6M): {int(N*0.008):,}") print(f"Trafność na 100 kontaktów: 3.7% (vs. 0.8% stopa bazowa)") print(f"AUC-ROC: 0.72")