Sobre el Proyecto
Sistema de clasificación de zonas urbanas por potencial de revalorización. Combina un XGBoost entrenado (3 clases: Baja/Media/Alta) con un Graph Neural Network (GNN) de 2 rounds de message-passing que propaga el score local entre zonas adyacentes, capturando efectos espaciales de gentrificación.
Cómo medir la efectividad real del modelo
Para modelos de clasificación como este, las métricas clave son F1-score y MCC — son más honestas que el accuracy cuando las clases están equilibradas:
- F1-macro = 0.61: promedio del F1 de las 3 clases (Baja/Media/Alta). Un F1=1.0 sería perfección; F1=0.33 sería azar. Nuestro modelo está un 28% por encima del azar con 3 clases perfectamente equilibradas (~33% cada una). Esto es más honesto que el accuracy, que puede ser alto simplemente prediciendo siempre la clase más frecuente.
- MCC = 0.41: Matthews Correlation Coefficient. Va de -1 (predicciones inversas) a +1 (perfecto). Un MCC=0.41 significa una correlación real del 41% entre predicciones y etiquetas reales — robusto aunque las clases estén desbalanceadas.
- CV F1 = 0.59 ± 0.02: validación cruzada en 5 particiones independientes. La varianza baja (±0.02) confirma que el modelo no hace overfitting — generaliza bien a datos no vistos.
- Por qué el GNN añade valor: el XGBoost predice cada zona de forma independiente. El message-passing GNN añade coherencia espacial: una zona "Alta" rodeada de zonas "Baja" pierde influencia; una zona "Media" rodeada de "Alta" la gana. Esto replica cómo funciona la gentrificación real.
Arquitectura del Modelo
- XGBoost Clasificador: 600 árboles, max_depth=6, lr=0.04. Entrenado con 18 features sobre 4.000 barrios sintéticos calibrados con INE IPV 2015-2024. Predice P(Baja)/P(Media)/P(Alta) → score 0-1.
- Features (18): precio m², tendencia 1a y 3a, infraestructura, transporte, licencias de obra y rehabilitación, renta media, densidad de población, edad media de edificios, vacancia comercial, actividad cultural, distancia al centro, ratio propietarios, superficie media, tasa de paro, nuevos residentes, precio alquiler m².
- GNN Message-passing Round 1: score_r1[i] = 0.65 × score_xgb[i] + 0.35 × media(vecinos). Propaga influencia de zonas emergentes contiguas.
- GNN Message-passing Round 2: score_r2[i] = 0.72 × score_r1[i] + 0.28 × media(vecinos). Suavizado espacial secundario.
Visualización Interactiva
Mapa sobre OpenStreetMap (CartoDB Dark) con marcadores coloreados por score. Click en cualquier zona para ver: datos de mercado, señales detectadas, desglose de contribución al score por feature y zonas vecinas en el grafo.
Tecnologías
Python 3.12 · XGBoost · FastAPI · Leaflet.js · NumPy · joblib · Laravel (proxy HTTP) · CartoDB Tiles
Integración, datos y licencia
- Integración: API REST propia (FastAPI) con 9 endpoints documentados en el repositorio; se puede consumir desde cualquier lenguaje o plataforma, con especificación OpenAPI autogenerada.
- Tratamiento de datos: el procesamiento se realiza íntegramente en el servidor del proyecto, sin enviar datos a servicios de IA de terceros. No se almacenan las consultas de la demo.
- Licencia: MIT — uso libre, incluido comercial, manteniendo el aviso de copyright. El repositorio contiene la aplicación completa y puede desplegarse en infraestructura propia. El código es gratuito; los costes de motor de IA, infraestructura, implantación y mantenimiento corren por cuenta de quien lo despliega (no se ofrece soporte ni consultoría).
¿Cómo lo integro?
Disponible ahora: API REST por ciudad y barrio; la respuesta incluye el identificador de barrio, lo que permite cruzarla con cualquier capa geográfica propia.
Integraciones habituales en este sector (valoradas como vía recomendada; salvo que se indique lo contrario, no vienen implementadas — el código está preparado para añadirlas):
- GIS (QGIS, ArcGIS) — YA IMPLEMENTADO:
GET /ml/revalorizacion/geojson devuelve los barrios y su score en GeoJSON (RFC 7946). Se carga por URL en QGIS, ArcGIS, Leaflet o Mapbox y se colorea directamente por la propiedad score, sin código de conversión.
- Catastro + INE: cruce con datos censales y de padrón para contrastar la señal del modelo con demografía y renta reales.
- Ayuntamientos / portales open data: muchos publican planeamiento urbanístico y licencias de obra: son la variable adelantada natural para este modelo.