Trabajo de grado · Maestría en Ciencia de Datos · UPB
Precios de vivienda en Rionegro, estimados con aprendizaje automático.
Describa un inmueble y obtenga su precio de oferta estimado, un intervalo de predicción del 90 % y el segmento de mercado al que pertenece.
- Registros
- —
- Categorías de barrio
- —
- Segmentos
- —
- R² (log)
- —
- MAPE
- —
01Estimador
Describa el inmueble
02Modelo
Cómo se calcula la estimación
Un pipeline de scikit-learn y XGBoost entrenado con — registros de anuncios de Ciencuadras y Fincaraíz (abril y septiembre de 2026). En producción, el modelo se exporta a JSON y una API en PHP reproduce la predicción de Python sin diferencias.
- 01Entrada10 variables del inmueble y su ubicación
- 02PreprocesamientoOne-hot, target encoding del barrio y periodo de referencia
- 03XGBoostÁrboles de decisión sobre el logaritmo del precio
- 04Intervalo 90 %Percentiles 5 y 95 de los residuos por quintil de la predicción
- 05SegmentoK-Means (k = 2) sobre área, habitaciones, baños, estrato, parqueaderos y distancia al centro
Desempeño en datos de prueba
— inmuebles no usados para ajustar el modelo seleccionado. El modelo publicado se reentrenó después con los — registros. Intervalos de confianza del 95 % por bootstrap de grupos.
03Segmentos
Dos mercados distintos
El clustering separa el mercado residencial de Rionegro en dos segmentos con precios, tipologías y errores del modelo muy diferentes.
04API
Consulte el modelo desde su código
API REST pública, sin autenticación. Respuestas en JSON con CORS habilitado. El ejemplo usa los datos actuales del formulario.
GET/api/metadatos.php
Categorías, rangos válidos, distancias medianas por barrio, segmentos y métricas.
POST/api/predecir.php
Precio estimado, intervalo del 90 %, segmento, zona y advertencias.
| Campo | Tipo | Notas |
|---|---|---|
tipo_inmueble | string | apartamento · casa · casa_campestre |
barrio | string | Uno de los barrios de metadatos |
area_m2 | number | Dentro del rango de los datos |
habitaciones banos parqueaderos estrato | integer | Dentro del rango de los datos |
conjunto_cerrado | 0 | 1 | |
dist_centro_km dist_aeropuerto_km | number | Opcionales: mediana del barrio |
Respuesta 200: precio_cop, intervalo_inferior_cop, intervalo_superior_cop, segmento, segmento_info, zona y advertencias (con codigo y mensaje).
Errores: 400 JSON no válido · 405 método · 422 validación, con un mensaje por campo en detalles · 429 más de 60 peticiones por minuto desde la misma IP.