APARTAMENTOS_E_SALAS / apartamentos.py
ESJL's picture
Update apartamentos.py
0bdf561 verified
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'