Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -9,28 +9,19 @@ model_LayAway_calibrated = joblib.load('platt_scaled_model_class_layaway_0.pkl')
|
|
9 |
model_LayHome = joblib.load('model_class_layhome_1.pkl')
|
10 |
|
11 |
# Faixas de precisão
|
12 |
-
precision_by_bin = {
|
13 |
-
'
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
'
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
'60-65%': 0.786517,
|
26 |
-
'65-70%': 0.793349,
|
27 |
-
'70-75%': 0.818182,
|
28 |
-
'75-80%': 0.853535,
|
29 |
-
'80-85%': 0.822222,
|
30 |
-
'85-90%': 0.841962,
|
31 |
-
'90-95%': 0.853618,
|
32 |
-
'95-100%': 0.902997
|
33 |
-
}
|
34 |
|
35 |
def converter_para_float(valor):
|
36 |
return float(valor.replace(',', '.'))
|
@@ -46,14 +37,8 @@ def calcular_percentual_recomendado(probabilidade, max_percent, min_percent, pre
|
|
46 |
return round(f_star * 100, 2)
|
47 |
|
48 |
def determinar_faixa(probabilidade):
|
49 |
-
# Definindo as faixas de probabilidade em intervalos de 5%
|
50 |
bins = np.arange(0, 1.05, 0.05) # Faixas de 0% a 100% com passos de 5%
|
51 |
-
labels = [
|
52 |
-
'0-5%', '5-10%', '10-15%', '15-20%', '20-25%',
|
53 |
-
'25-30%', '30-35%', '35-40%', '40-45%', '45-50%',
|
54 |
-
'50-55%', '55-60%', '60-65%', '65-70%', '70-75%',
|
55 |
-
'75-80%', '80-85%', '85-90%', '90-95%', '95-100%'
|
56 |
-
]
|
57 |
|
58 |
# Encontrar o índice da faixa correspondente
|
59 |
bin_index = np.digitize([probabilidade / 100], bins, right=False) - 1
|
@@ -92,7 +77,7 @@ def fazer_previsao(ODD_H, ODD_D, ODD_A, min_percent, max_percent):
|
|
92 |
|
93 |
# Determinar faixa de probabilidade e precisão correspondente
|
94 |
faixa = determinar_faixa(probabilidade_LayAway_calibrated)
|
95 |
-
precision = precision_by_bin[faixa]
|
96 |
|
97 |
# Calcular percentual recomendado e odds mínima
|
98 |
percentual_recomendado = calcular_percentual_recomendado(
|
@@ -113,8 +98,7 @@ def fazer_previsao(ODD_H, ODD_D, ODD_A, min_percent, max_percent):
|
|
113 |
f"---> probabilidade: {probabilidade_LayHome}%\n" \
|
114 |
f"---> Percentual recomendado da banca: {percentual_recomendado}%\n"
|
115 |
|
116 |
-
return resultado
|
117 |
-
|
118 |
|
119 |
# Criar a interface Gradio
|
120 |
iface = gr.Interface(
|
@@ -126,9 +110,12 @@ iface = gr.Interface(
|
|
126 |
gr.Slider(1, 40, label="Percentual Mínimo da Banca (%)", value=1), # Slider mínimo com valor inicial 1
|
127 |
gr.Slider(10, 100, label="Percentual Máximo da Banca (%)", value=100) # Slider máximo com valor inicial 100
|
128 |
],
|
129 |
-
outputs=
|
|
|
|
|
|
|
130 |
title="Redução de Risco em Apostas",
|
131 |
description="Insira as Odds e obtenha uma sugestão para entradas LayAway (CASA vence ou EMPATA) e LayHome (VISITANTE vence ou EMPATA), juntamente com o percentual recomendado da banca e odds mínima."
|
132 |
)
|
133 |
|
134 |
-
iface.launch()
|
|
|
9 |
model_LayHome = joblib.load('model_class_layhome_1.pkl')
|
10 |
|
11 |
# Faixas de precisão
|
12 |
+
precision_by_bin = pd.DataFrame({
|
13 |
+
'Faixa': [
|
14 |
+
'0-5%', '5-10%', '10-15%', '15-20%', '20-25%',
|
15 |
+
'25-30%', '30-35%', '35-40%', '40-45%', '45-50%',
|
16 |
+
'50-55%', '55-60%', '60-65%', '65-70%', '70-75%',
|
17 |
+
'75-80%', '80-85%', '85-90%', '90-95%', '95-100%'
|
18 |
+
],
|
19 |
+
'Precision': [
|
20 |
+
0.592715, 0.519316, 0.524543, 0.636364, 0.666905, 0.678614, 0.694686,
|
21 |
+
0.727428, 0.732558, 0.750000, 0.784753, 0.788012, 0.786517, 0.793349,
|
22 |
+
0.818182, 0.853535, 0.822222, 0.841962, 0.853618, 0.902997
|
23 |
+
]
|
24 |
+
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
def converter_para_float(valor):
|
27 |
return float(valor.replace(',', '.'))
|
|
|
37 |
return round(f_star * 100, 2)
|
38 |
|
39 |
def determinar_faixa(probabilidade):
|
|
|
40 |
bins = np.arange(0, 1.05, 0.05) # Faixas de 0% a 100% com passos de 5%
|
41 |
+
labels = precision_by_bin['Faixa'].tolist()
|
|
|
|
|
|
|
|
|
|
|
42 |
|
43 |
# Encontrar o índice da faixa correspondente
|
44 |
bin_index = np.digitize([probabilidade / 100], bins, right=False) - 1
|
|
|
77 |
|
78 |
# Determinar faixa de probabilidade e precisão correspondente
|
79 |
faixa = determinar_faixa(probabilidade_LayAway_calibrated)
|
80 |
+
precision = precision_by_bin.loc[precision_by_bin['Faixa'] == faixa, 'Precision'].values[0]
|
81 |
|
82 |
# Calcular percentual recomendado e odds mínima
|
83 |
percentual_recomendado = calcular_percentual_recomendado(
|
|
|
98 |
f"---> probabilidade: {probabilidade_LayHome}%\n" \
|
99 |
f"---> Percentual recomendado da banca: {percentual_recomendado}%\n"
|
100 |
|
101 |
+
return resultado, precision_by_bin
|
|
|
102 |
|
103 |
# Criar a interface Gradio
|
104 |
iface = gr.Interface(
|
|
|
110 |
gr.Slider(1, 40, label="Percentual Mínimo da Banca (%)", value=1), # Slider mínimo com valor inicial 1
|
111 |
gr.Slider(10, 100, label="Percentual Máximo da Banca (%)", value=100) # Slider máximo com valor inicial 100
|
112 |
],
|
113 |
+
outputs=[
|
114 |
+
gr.Textbox(label="Recomendação"),
|
115 |
+
gr.Dataframe(label="Tabela de Precision por Faixa", value=precision_by_bin)
|
116 |
+
],
|
117 |
title="Redução de Risco em Apostas",
|
118 |
description="Insira as Odds e obtenha uma sugestão para entradas LayAway (CASA vence ou EMPATA) e LayHome (VISITANTE vence ou EMPATA), juntamente com o percentual recomendado da banca e odds mínima."
|
119 |
)
|
120 |
|
121 |
+
iface.launch(share=True)
|