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()