joaomaia commited on
Commit
ed4b241
·
verified ·
1 Parent(s): 04d4e06

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -18
app.py CHANGED
@@ -2,8 +2,8 @@ import gradio as gr
2
  import joblib
3
  import numpy as np
4
 
5
- # Carregar o modelo e o modelo de calibração serializados
6
- model, calibration_model = joblib.load("tiebreak_calibrated_model.pkl")
7
 
8
  # Função para realizar a previsão
9
  def predict_tiebreak(odds1_input, odds2_input):
@@ -16,31 +16,25 @@ def predict_tiebreak(odds1_input, odds2_input):
16
  odds2 = float(odds2_input)
17
 
18
  # Identificar a menor e maior odd (não precisamos assumir qual é qual)
19
- win_odds = min(odds1, odds2)
20
- loser_odds = max(odds1, odds2)
21
 
22
- # Calculando as features
23
- odds_ratio = win_odds / loser_odds
24
- log_odds_w = np.log(win_odds)
25
- log_odds_l = np.log(loser_odds)
26
- prob_w = 1 / win_odds
27
- prob_l = 1 / loser_odds
28
- odds_spread = abs(loser_odds - win_odds)
29
 
30
  # Criando o vetor de features para o modelo
31
- features = np.array([[odds_ratio, log_odds_w, log_odds_l, prob_w, prob_l, odds_spread]])
32
 
33
- # Realizando a previsão com o modelo original
34
  raw_prob = model.predict_proba(features)[0, 1] # Probabilidade da classe 1 (menos de 1.5 tiebreaks)
35
-
36
- # Calibrando a probabilidade com o modelo de calibração
37
- calibrated_prob = calibration_model.predict_proba([[raw_prob]])[0, 1]
38
 
39
  # Calculando a odds mínima
40
- odds_minima = 1 / calibrated_prob
41
 
42
  # Formatando a probabilidade para percentual com duas casas decimais
43
- prob_percent = f"{round(calibrated_prob * 100, 2)}%"
44
 
45
  # Retornando os valores
46
  return prob_percent, round(odds_minima, 2)
 
2
  import joblib
3
  import numpy as np
4
 
5
+ # Carregar o novo modelo serializado
6
+ model = joblib.load("tiebreak_model_v1.pkl")
7
 
8
  # Função para realizar a previsão
9
  def predict_tiebreak(odds1_input, odds2_input):
 
16
  odds2 = float(odds2_input)
17
 
18
  # Identificar a menor e maior odd (não precisamos assumir qual é qual)
19
+ odds_min = min(odds1, odds2)
20
+ odds_max = max(odds1, odds2)
21
 
22
+ # Calculando as features com base nas novas métricas
23
+ odds_ratio = odds_min / odds_max
24
+ diff_log_odds = np.log(odds_max) - np.log(odds_min)
25
+ sum_prob = (1 / odds_min) + (1 / odds_max)
 
 
 
26
 
27
  # Criando o vetor de features para o modelo
28
+ features = np.array([[odds_ratio, diff_log_odds, sum_prob]])
29
 
30
+ # Realizando a previsão com o novo modelo
31
  raw_prob = model.predict_proba(features)[0, 1] # Probabilidade da classe 1 (menos de 1.5 tiebreaks)
 
 
 
32
 
33
  # Calculando a odds mínima
34
+ odds_minima = 1 / raw_prob
35
 
36
  # Formatando a probabilidade para percentual com duas casas decimais
37
+ prob_percent = f"{round(raw_prob * 100, 2)}%"
38
 
39
  # Retornando os valores
40
  return prob_percent, round(odds_minima, 2)