import gradio as gr import pandas as pd import numpy as np import xgboost as xgb import joblib from sklearn.preprocessing import MinMaxScaler def execute(FONTE, IDADE, RH, ANDAR, X, Y, ATOTAL, ANO_2019, ANO_2020 , ANO_2021, ANO_2022): df = pd.DataFrame.from_dict({'FONTE': [FONTE], 'IDADE': [IDADE], 'RH': np.log([RH]), 'ANDAR': [ANDAR], 'X': [X], 'Y': [Y], 'ATOTAL': np.log([ATOTAL]), 'ANO_2019': [ANO_2019], 'ANO_2020': [ANO_2020], 'ANO_2021': [ANO_2021], 'ANO_2022': [ANO_2022] }) input_scaler = joblib.load("dados/apartamentos/input_scaler_ape_DEZ2022.save") df = input_scaler.transform(df) cols = ['FONTE', 'IDADE', 'RH', 'ANDAR', 'X', 'Y', 'ATOTAL', 'ANO_2019', 'ANO_2020', 'ANO_2021', 'ANO_2022'] aval = pd.DataFrame(df, columns = cols) df = xgb.DMatrix(aval) loaded_model = xgb.Booster() loaded_model.load_model("dados/apartamentos/APARTAMENTO_2020_2021_2022_2023.model") pred = loaded_model.predict(df) output_scaler = joblib.load("dados/apartamentos/output_scaler_ape_DEZ2022.save") pred = output_scaler.inverse_transform(np.array(pred).reshape(-1,1)) pred = np.exp(pred).tolist() return f"""Valor do imóvel: R${round(pred[0][0]* ATOTAL, -2)}""" def load_inputs(): # Substituindo gr.inputs.Number por gr.Number e default por value FONTE = gr.Number(value=0, label='Fonte: 0 - Transação | 1 - Oferta') IDADE = gr.Number(value=1, label='Idade do imóvel (Ano Base: 2022)') RH = gr.Number(value=45, label='Região Homogênea') ANDAR = gr.Number(value=1, label='Andar, conforme Cadastro Imobiliário') X = gr.Number(value=282122, label='Longitude (SIRGAS 2000)') Y = gr.Number(value=1672718, label='Latitude (SIRGAS 2000)') ATOTAL = gr.Number(value=60.0, label='Área Total') # Campos de Ano ANO_2019 = gr.Number(value=0, label='Ano 2019') ANO_2020 = gr.Number(value=0, label='Ano 2020') ANO_2021 = gr.Number(value=0, label='Ano 2021') ANO_2022 = gr.Number(value=1, label='Ano 2022') return [FONTE, IDADE, RH, ANDAR, X, Y, ATOTAL, ANO_2019, ANO_2020, ANO_2021, ANO_2022] output_label = "Valor do imóvel (R$)" title = 'Venda - Apartamentos' description = '27.132 dados de Janeiro de 2019 a Dezembro de 2022'