BOXES / boxes.py
ESJL's picture
Update boxes.py
5ed7ddb verified
Raw History Blame Contribute Delete
2.34 kB
import gradio as gr
import pandas as pd
import numpy as np
import xgboost as xgb
import joblib
def execute(FONTE, IDADE, DF, X, Y, ATOTAL, ANO_2019, ANO_2020, ANO_2021, ANO_2022):
df = pd.DataFrame.from_dict({'FONTE': [FONTE],
'IDADE': [IDADE],
'DF': [DF],
'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/boxes/input_scaler_boxes_2022.save")
df = input_scaler.transform(df)
cols = ['FONTE', 'IDADE', 'DF', '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/boxes/boxes_2020_2021_2022_2023_lean.model")
pred = loaded_model.predict(df)
output_scaler = joblib.load("dados/boxes/output_scaler_boxes_2022.save")
pred = output_scaler.inverse_transform(np.array(pred).reshape(-1,1))
pred = np.exp(pred).tolist()
return f"""R${round(pred[0][0], -2)}"""
def load_inputs():
# 'default' virou 'value' e 'gr.inputs.Number' virou 'gr.Number'
FONTE = gr.Number(value=0, label='Fonte: 0 - Transação | 1 - Oferta')
ATOTAL = gr.Number(value=15.0, label='Área Total')
DF = gr.Number(value=1, label='Divisão Fiscal (1, 2 ou 3)')
IDADE = gr.Number(value=1, label='Idade do imóvel (Ano Base: 2022)')
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')
Y = gr.Number(value=1.672718e+06, label='Latitude (SIRGAS 2000)')
X = gr.Number(value=282122.159663, label='Longitude (SIRGAS 2000)')
return [FONTE, IDADE, DF, X, Y, ATOTAL, ANO_2019, ANO_2020, ANO_2021, ANO_2022]
output_label = "Valor do imóvel (R$)"
title = 'Venda - Boxes de estacionamento'
description = '7.173 dados de Janeiro de 2019 a Outubro de 2022'