Spaces:
Configuration error
Configuration error
| # app.py | |
| import gradio as gr | |
| import pandas as pd | |
| import numpy as np | |
| import joblib | |
| # Cargar modelo y codificador | |
| modelo = joblib.load("modelo.pkl") | |
| le_barrio = joblib.load("barrios_encoder.pkl") | |
| # Obtener lista de barrios únicos (para el desplegable) | |
| barrios_unicos = le_barrio.classes_.tolist() | |
| def predecir_valor(barrio, estrato, area): | |
| try: | |
| # Codificar barrio | |
| if barrio in barrios_unicos: | |
| barrio_cod = le_barrio.transform([barrio])[0] | |
| else: | |
| # Si no está, usar el barrio más común (moda) | |
| barrio_cod = 0 # o np.median(le_barrio.transform(barrios_unicos)) | |
| # Preparar entrada | |
| entrada = np.array([[barrio_cod, estrato, area]]) | |
| prediccion = modelo.predict(entrada)[0] | |
| valor_formateado = f"${prediccion:,.0f} COP" | |
| return valor_formateado | |
| except Exception as e: | |
| return f"Error: {str(e)}" | |
| # Interfaz Gradio | |
| with gr.Blocks(title="🏡 Predice tu vivienda en Bucaramanga") as demo: | |
| gr.Markdown("# 🏠 ¿Cuánto vale tu vivienda en Bucaramanga?") | |
| gr.Markdown("Modelo de predicción basado en datos catastrales públicos del municipio.") | |
| with gr.Row(): | |
| barrio = gr.Dropdown(choices=barrios_unicos, label="Barrio", value="Girardot") | |
| estrato = gr.Slider(1, 6, value=3, step=1, label="Estrato socioeconómico") | |
| area = gr.Number(value=70, label="Área privada (m²)", minimum=20, maximum=500) | |
| output = gr.Textbox(label="Valor predicho (catastral estimado)") | |
| btn = gr.Button("Predecir valor") | |
| btn.click(predecir_valor, inputs=[barrio, estrato, area], outputs=output) | |
| gr.Markdown(""" | |
| > ℹ️ Este modelo usa **valor catastral** como proxy del valor comercial. | |
| > Datos: Alcaldía de Bucaramanga - [datos.gov.co](https://www.datos.gov.co) | |
| > Proyecto educativo y de código abierto. | |
| """) | |
| demo.launch() |