joaomaia commited on
Commit
fca9b2e
·
verified ·
1 Parent(s): ce39427

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -8
app.py CHANGED
@@ -3,9 +3,12 @@ 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):
@@ -13,18 +16,32 @@ def predict_tiebreak(df):
13
  odds_min = min(row['Odds 1'], row['Odds 2'])
14
  odds_max = max(row['Odds 1'], row['Odds 2'])
15
  odds_ratio = odds_min / odds_max
16
- diff_log_odds = np.log(odds_max) - np.log(odds_min)
17
  sum_prob = (1 / odds_min) + (1 / odds_max)
18
- return pd.Series([odds_ratio, diff_log_odds, sum_prob])
 
 
 
 
19
 
20
- df[['Odds_Ratio', 'Diff_Log_Odds', 'Sum_Prob']] = df.apply(calculate_features, axis=1)
 
 
 
 
 
 
 
21
 
22
- features = df[['Odds_Ratio', 'Diff_Log_Odds', 'Sum_Prob']]
 
23
  df['Probability'] = model.predict_proba(features)[:, 1]
24
 
25
- best_threshold = 0.9420000000000005
 
26
  df['entrada'] = df['Probability'] >= best_threshold
27
  df = df[df['entrada'] == True]
 
28
  return df
29
 
30
  # Função para carregar o arquivo Excel e prever
@@ -49,4 +66,4 @@ gr.Interface(
49
  outputs=outputs,
50
  title="Previsão de Tiebreaks",
51
  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."
52
- ).launch()
 
3
  import pandas as pd
4
  import numpy as np
5
 
6
+ # Carregar o modelo treinado e o encoder
7
+ model_path = 'tiebreak_model_v1b.pkl'
8
+ encoder_path = 'ordinal_encoder_tiebreak_model_v1b.pkl'
9
+
10
  model = joblib.load(model_path)
11
+ encoder = joblib.load(encoder_path)
12
 
13
  # Função para prever utilizando o modelo
14
  def predict_tiebreak(df):
 
16
  odds_min = min(row['Odds 1'], row['Odds 2'])
17
  odds_max = max(row['Odds 1'], row['Odds 2'])
18
  odds_ratio = odds_min / odds_max
19
+ diff_log_odds = np.log(odds_max) / np.log(odds_min)
20
  sum_prob = (1 / odds_min) + (1 / odds_max)
21
+ mean_log_odds = (np.log(odds_max) + np.log(odds_min)) / 2
22
+
23
+ return pd.Series([mean_log_odds, sum_prob, odds_ratio])
24
+
25
+ df[['Mean_Log_Odds', 'Sum_Prob', 'Ratio_Log_Odds']] = df.apply(calculate_features, axis=1)
26
 
27
+ # Aplicar o OptimalBinning e transformar os dados
28
+ bin_columns = ['Mean_Log_Odds', 'Sum_Prob']
29
+ for column in bin_columns:
30
+ optb = joblib.load(f'{column}_binning_tiebreak_model_v1b.pkl')
31
+ df[f"{column}_bin"] = optb.transform(df[column], metric="bins")
32
+
33
+ # Aplicar o encoder nas variáveis binadas
34
+ df[bin_columns] = encoder.transform(df[[f"{col}_bin" for col in bin_columns]])
35
 
36
+ # Selecionar as features para predição
37
+ features = df[['Mean_Log_Odds_bin', 'Sum_Prob_bin', 'Ratio_Log_Odds']]
38
  df['Probability'] = model.predict_proba(features)[:, 1]
39
 
40
+ # Usar o threshold definido
41
+ best_threshold = 0.9400000000000005
42
  df['entrada'] = df['Probability'] >= best_threshold
43
  df = df[df['entrada'] == True]
44
+
45
  return df
46
 
47
  # Função para carregar o arquivo Excel e prever
 
66
  outputs=outputs,
67
  title="Previsão de Tiebreaks",
68
  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."
69
+ ).launch()