
Data Science
PrecioPiso (TFM): predicción inmobiliaria con POI y Streamlit
Introducción
PrecioPiso es un proyecto de fin de máster orientado a estimar precios de vivienda en España a partir de datos de portales inmobiliarios y variables contextuales del entorno. Combina un pipeline reproducible de scraping, un EDA riguroso, modelos supervisados y una interfaz web en Streamlit para consulta interactiva.
Datos y pipeline
- Fuentes: anuncios de venta y alquiler de portales inmobiliarios, enriquecidos con Points of Interest (POI) de OpenStreetMap mediante Overpass.
- Extracción: scripts en Python dentro de contenedores Docker; manejo de pausas aleatorias, cabeceras simuladas y reintentos.
- Estructura: staging en CSV → integración en PostgreSQL → dataset unificado con variables de inmueble (mt2, baños, habitaciones, coordenadas, CCAA) y distancias a POI (1km/3km/5km).
- Limpieza: depuración de outliers evidentes, mapeo ciudad→CCAA, eliminación de columnas irrelevantes y tratamiento explícito de missings.
EDA en breve
- Distribuciones con asimetría marcada; concentración de superficies por debajo de 100 m² y presencia de outliers en colas.
- Missings controlados tras imputaciones dirigidas; variables con alta ausencia (p. ej.,
planta) se eliminan. - Correlaciones: latitud/longitud sin relación lineal fuerte con mt2; importancia de las categorías territoriales y del contexto.
Modelos y evaluación
Dos enfoques: Regresión Lineal (línea base interpretable) y Random Forest (no lineal, robusto). Entrenamiento con train/test split,
validación cruzada e hyperparameter tuning. Métricas: R², RMSE y MAE. El modelo tipo bosque supera consistentemente a la línea base.
Variables dominantes: mt2, baños, habitaciones y un bloque relevante de POI (farmacias, supermercados, transporte, etc.).
De modelo a producto
- Arquitectura: contenedores Docker por etapa (ingesta, procesamiento, entrenamiento, app).
- CI/CD: GitHub Actions para construir imágenes; despliegue automatizado y rollouts frecuentes.
- Orquestación ligera: tareas programadas con
cronpara actualizar datos/modelo diariamente. - App web: Streamlit como front de consulta con formularios y visualizaciones (distribuciones, mapas de calor y comparativas).
UX y visualización
- Entrada guiada por campos clave (ubicación, mt2, habitaciones, baños, contexto).
- Resultados con estimación puntual, bandas de error y descomposición por contribuciones de variables.
- Mapas de calor: simulaciones manteniendo atributos del inmueble y variando la geolocalización para comparar zonas.
Limitaciones
- Ámbito geográfico acotado a varias CCAA en la versión actual.
- Dependencia de cobertura/calidad de anuncios y POI; factores macro (ciclo, política urbana) fuera del alcance del modelo.
- Coste computacional del bosque en datasets grandes; necesidad de optimizar y vigilar tiempos de inferencia.
Riesgos de datos y cumplimiento
El scraping de portales comerciales tiene restricciones. Para explotación comercial o redistribución es recomendable negociar licencias o usar proveedores de datos con permisos explícitos. Definir políticas de actualización, rotación de agentes de usuario y respeto de robots.txt.
Próximos pasos
- Expansión nacional de cobertura y normalización territorial más fina (sección censal, IRIS, etc.).
- Modelos alternativos: Gradient Boosting/XGBoost; calibración probabilística; explicabilidad (SHAP).
- Análisis temporal: nowcasting de precios, elasticidades locales, sensibilidad a apertura/cierre de POI.
- API ligera para consumo externo; feature store minimalista; trazabilidad de versiones de datos y modelo.
Conclusión
PrecioPiso demuestra que una arquitectura contenida, un dataset enriquecido con contexto y un modelo no lineal bien gobernado pueden ofrecer estimaciones útiles y accionables. El valor no está sólo en la predicción, sino en la capacidad de comparar escenarios y comunicar incertidumbre de forma clara a usuarios no técnicos.
Repositorio de ejemplo: github.com/Alonsomar/TFM_inmobiliario_av.