Api-renta / app.py
eslukah's picture
Update app.py
ed25afd verified
import joblib
import gradio as gr
import pandas as pd
# Cargar el modelo guardado
model = joblib.load('gradient_boosting_model.pkl')
# Definir la funci贸n de predicci贸n
def predict_rent(condado, estado, valor_venta, total_housing_units, median_rooms, fuel_oil, tasa_desempleo):
# Crear un DataFrame con los datos ingresados
input_data = pd.DataFrame({
'condado': [condado],
'estado': [estado],
'valor_venta': [valor_venta],
'total_housing_units': [total_housing_units],
'median_rooms': [median_rooms],
'fuel_oil,_kerosene,_etc.': [fuel_oil],
'tasa_desempleo': [tasa_desempleo]
})
# Aplicar el encoding de 'estado'
input_data = pd.get_dummies(input_data, columns=['estado'], drop_first=True)
# Asegurarse de que las columnas encajen con las del modelo
missing_cols = set(model.feature_names_in_) - set(input_data.columns)
for col in missing_cols:
input_data[col] = 0
input_data = input_data[model.feature_names_in_]
# Hacer la predicci贸n
prediction = model.predict(input_data)
return prediction[0]
# Crear la interfaz de Gradio
inputs = [
gr.Textbox(label="Estado", interactive=True),
gr.Textbox(label="Condado", interactive=True),
gr.Slider(label="Valor de Venta ($)", value=100000, minimum=50000, maximum=5000000, step=10000),
gr.Slider(label="# de habitaciones", value=3, minimum=1, maximum=10, step=1),
gr.Slider(label="Tasa de Desempleo (%)", value=0.05, minimum=0.0, maximum=0.2, step=0.01),
gr.Number(label="Total de propiedades para rentar", interactive=True),
gr.Number(label="Propiedades con uso de Gasolina y Keroseno", interactive=True)
]
output = gr.Textbox(label="Predicci贸n de la Renta Mensual")
# Inicializar la interfaz
app = gr.Interface(
fn=predict_rent,
inputs=inputs,
outputs=output,
title="Predicci贸n de Renta Mensual",
description="Ingrese las caracter铆sticas de la vivienda para predecir el valor mensual de la renta.",
theme="compact", # Opcional: Cambia el dise帽o
)
# Iniciar la aplicaci贸n
if __name__ == "__main__":
app.launch()