Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
import statsmodels.api as sm | |
import numpy as np | |
df = pd.read_excel('MOD_VC.xlsx', 'DF') | |
df = df.round(2) | |
df[['AREA', 'TEST', 'VU']] = np.log(df[['AREA', 'TEST', 'VU']]) | |
df['RB'] = (1/df['RB']) | |
# Separar as variáveis independentes (X) e dependente (y) | |
X = df[['AREA', 'TEST', 'PAV', 'POS', 'RB']] | |
y = df['VU'] | |
X_with_constant = sm.add_constant(X) | |
model = sm.OLS(y, X_with_constant) | |
results = model.fit() | |
def predict(file): | |
# Lendo o arquivo de input | |
input_df = pd.read_excel(file) | |
# Processamento da planilha de input | |
input_df[['AREA', 'TEST']] = np.log(input_df[['AREA', 'TEST']]) | |
input_df['RB'] = (1/input_df['RB']) | |
# Preparar dados para predição | |
X_new = np.array(input_df) | |
X_new_with_constant = np.insert(X_new, 0, 0.9999, axis=1) | |
# Fazer previsões | |
y_pred = results.predict(X_new_with_constant) | |
ci = results.get_prediction(X_new_with_constant).conf_int(alpha=0.2) | |
inter_conf = np.exp(ci) | |
# Adicionar previsões e intervalos de confiança à planilha | |
input_df['Prev'] = np.exp(y_pred) | |
input_df['LI_IC'] = inter_conf[:, 0] | |
input_df['LS_IC'] = inter_conf[:, 1] | |
input_df[['AREA', 'TEST']] = np.exp(input_df[['AREA', 'TEST']]) | |
input_df['RB'] = (1/input_df['RB']) | |
# Save the output DataFrame as an XLS file | |
output_file = 'avaliacao_massa.xlsx' | |
input_df.to_excel(output_file, index=False) | |
return output_file | |
iface = gr.Interface( | |
fn=predict, | |
inputs=gr.File(label="Carregue seu arquivo XLS/XLSX"), | |
outputs=gr.File(label="Baixar arquivo"), | |
title="Vera Cruz - Avaliação em massa", | |
description="Faça o upload de um arquivo XLS/XLSX para previsão em massa. Download de planilha de exemplo <a href='https://huggingface.co/spaces/fschwartzer/VC_MASSA/resolve/main/teste.xlsx' download='teste.xlsx'>aqui</a>." | |
) | |
iface.launch() | |