joaomaia's picture
Update app.py
ce39427 verified
raw
history blame
1.83 kB
import gradio as gr
import joblib
import pandas as pd
import numpy as np
# Carregar o modelo treinado
model_path = 'tiebreak_model_v1.pkl'
model = joblib.load(model_path)
# Função para prever utilizando o modelo
def predict_tiebreak(df):
def calculate_features(row):
odds_min = min(row['Odds 1'], row['Odds 2'])
odds_max = max(row['Odds 1'], row['Odds 2'])
odds_ratio = odds_min / odds_max
diff_log_odds = np.log(odds_max) - np.log(odds_min)
sum_prob = (1 / odds_min) + (1 / odds_max)
return pd.Series([odds_ratio, diff_log_odds, sum_prob])
df[['Odds_Ratio', 'Diff_Log_Odds', 'Sum_Prob']] = df.apply(calculate_features, axis=1)
features = df[['Odds_Ratio', 'Diff_Log_Odds', 'Sum_Prob']]
df['Probability'] = model.predict_proba(features)[:, 1]
best_threshold = 0.9420000000000005
df['entrada'] = df['Probability'] >= best_threshold
df = df[df['entrada'] == True]
return df
# Função para carregar o arquivo Excel e prever
def predict_from_excel(file):
df = pd.read_excel(file)
df_predictions = predict_tiebreak(df)
# Salvar o DataFrame resultante em um arquivo Excel
output_file = "predictions.xlsx"
df_predictions.to_excel(output_file, index=False)
return df_predictions, output_file
# Interface Gradio usando a nova API de componentes
inputs = gr.File(label="Upload Excel File")
outputs = [gr.DataFrame(label="Tabela de Previsões"), gr.File(label="Download Predictions Excel")]
# Criando a interface
gr.Interface(
fn=predict_from_excel,
inputs=inputs,
outputs=outputs,
title="Previsão de Tiebreaks",
description="Faça o upload de um arquivo Excel contendo dados no formato final_df para prever a probabilidade de menos de 1.5 tiebreaks e verificar se deve entrar na aposta."
).launch()