joaomaia commited on
Commit
b1c9d77
·
verified ·
1 Parent(s): 33ffff3

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -0
app.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import joblib
3
+ import pandas as pd
4
+ import numpy as np
5
+
6
+ # Carregar o modelo treinado
7
+ model_path = 'tiebreak_model_v1.pkl'
8
+ model = joblib.load(model_path)
9
+
10
+ # Função para prever utilizando o modelo
11
+ def predict_tiebreak(df):
12
+ # Função para calcular as métricas
13
+ def calculate_features(row):
14
+ odds_min = min(row['Odds 1'], row['Odds 2'])
15
+ odds_max = max(row['Odds 1'], row['Odds 2'])
16
+ odds_ratio = odds_min / odds_max
17
+ diff_log_odds = np.log(odds_max) - np.log(odds_min)
18
+ sum_prob = (1 / odds_min) + (1 / odds_max)
19
+ return pd.Series([odds_ratio, diff_log_odds, sum_prob])
20
+
21
+ # Calcular as features
22
+ df[['Odds_Ratio', 'Diff_Log_Odds', 'Sum_Prob']] = df.apply(calculate_features, axis=1)
23
+
24
+ # Realizar a previsão com o modelo
25
+ features = df[['Odds_Ratio', 'Diff_Log_Odds', 'Sum_Prob']]
26
+ df['Probability'] = model.predict_proba(features)[:, 1]
27
+
28
+ # Verificar a decisão de entrar ou não na aposta com base no threshold
29
+ best_threshold = 0.9420000000000005
30
+ df['entrada'] = df['Probability'] >= best_threshold
31
+ df = df[df['entrada'] == True]
32
+ return df
33
+
34
+ # Função para carregar o arquivo Excel e prever
35
+ def predict_from_excel(file):
36
+ # Carregar o arquivo Excel em um DataFrame
37
+ df = pd.read_excel(file)
38
+
39
+ # Prever utilizando o modelo
40
+ df_predictions = predict_tiebreak(df)
41
+
42
+ # Retornar o DataFrame resultante como um arquivo Excel
43
+ output_file = "predictions.xlsx"
44
+ df_predictions.to_excel(output_file, index=False)
45
+ return output_file
46
+
47
+ # Interface Gradio
48
+ inputs = gr.inputs.File(label="Upload Excel File")
49
+ outputs = gr.outputs.File(label="Download Predictions Excel")
50
+
51
+ # Criando a interface
52
+ gr.Interface(fn=predict_from_excel,
53
+ inputs=inputs,
54
+ outputs=outputs,
55
+ title="Previsão de Tiebreaks",
56
+ 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."
57
+ ).launch()
58
+