joaomaia commited on
Commit
22db0a8
·
verified ·
1 Parent(s): 59fb896

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -34
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
- '0-5%': 0.592715,
14
- '5-10%': 0.519316,
15
- '10-15%': 0.524543,
16
- '15-20%': 0.636364,
17
- '20-25%': 0.666905,
18
- '25-30%': 0.678614,
19
- '30-35%': 0.694686,
20
- '35-40%': 0.727428,
21
- '40-45%': 0.732558,
22
- '45-50%': 0.750000,
23
- '50-55%': 0.784753,
24
- '55-60%': 0.788012,
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="text",
 
 
 
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)