Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -2,8 +2,8 @@ import gradio as gr
|
|
2 |
import joblib
|
3 |
import numpy as np
|
4 |
|
5 |
-
# Carregar o
|
6 |
-
model
|
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 |
-
|
20 |
-
|
21 |
|
22 |
-
# Calculando as features
|
23 |
-
odds_ratio =
|
24 |
-
|
25 |
-
|
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,
|
32 |
|
33 |
-
# Realizando a previsão com o modelo
|
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 /
|
41 |
|
42 |
# Formatando a probabilidade para percentual com duas casas decimais
|
43 |
-
prob_percent = f"{round(
|
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)
|