| import gradio as gr |
| import joblib |
| import pandas as pd |
|
|
| |
| model_LayAway = joblib.load('model_class_layaway_0.pkl') |
| model_LayHome = joblib.load('model_class_layhome_1.pkl') |
|
|
| def converter_para_float(valor): |
| |
| return float(valor.replace(',', '.')) |
|
|
| def calcular_percentual_recomendado(probabilidade, max_percent, min_percent): |
| |
| b = 1 |
| p = probabilidade / 100 |
| q = 1 - p |
| |
| |
| f_star = (b * p - q) / b |
| |
| |
| f_star = max(min(f_star, max_percent / 100), min_percent / 100) |
| |
| |
| if f_star < min_percent / 100: |
| f_star = min_percent / 100 |
| |
| |
| percentual_recomendado = round(f_star * 100, 2) |
| return percentual_recomendado |
|
|
| def fazer_previsao(ODD_H, ODD_D, ODD_A, min_percent, max_percent): |
| |
| ODD_H = converter_para_float(ODD_H) |
| ODD_D = converter_para_float(ODD_D) |
| ODD_A = converter_para_float(ODD_A) |
|
|
| data = pd.DataFrame( |
| {'H/A': [ODD_H / ODD_A], 'Diff': [(ODD_H / ODD_D) - (ODD_H / ODD_A)]}) |
| |
| previsao_LayAway = model_LayAway.predict(data)[0] |
| previsao_LayHome = model_LayHome.predict(data)[0] |
|
|
| if previsao_LayAway == previsao_LayHome: |
| resultado = 'Não entre!' |
| else: |
| if previsao_LayAway == 1: |
| entrada_LayAway = 'SIM' |
| else: |
| entrada_LayAway = 'NAO' |
|
|
| probabilidade_LayAway = round( |
| 100 * model_LayAway.predict_proba(data)[0][1], 2) |
| probabilidade_LayHome = round( |
| 100 * model_LayHome.predict_proba(data)[0][1], 2) |
| |
| percentual_recomendado = calcular_percentual_recomendado( |
| probabilidade_LayAway if entrada_LayAway == 'SIM' else probabilidade_LayHome, |
| max_percent, |
| min_percent |
| ) |
|
|
| resultado = f"entrada LayAway (se Odd> 1.17): {entrada_LayAway}\n" \ |
| f"---> probabilidade: {probabilidade_LayAway}%\n" \ |
| f"---> Percentual recomendado da banca: {percentual_recomendado}%\n" \ |
| f"\n" \ |
| f"entrada Home: {'SIM' if probabilidade_LayAway > 68.2 else 'NAO'}\n" \ |
| f"obs: Muito risco, apenas 67% de acerto (odds>1.489)\n" \ |
| f"\n" \ |
| f"entrada LayHome (se Odd> 1.28): {'SIM' if previsao_LayHome == 1 else 'NAO'}\n" \ |
| f"---> probabilidade: {probabilidade_LayHome}%\n" \ |
| f"---> Percentual recomendado da banca: {percentual_recomendado}%\n" |
|
|
| return resultado |
|
|
| |
| iface = gr.Interface( |
| fn=fazer_previsao, |
| inputs=[ |
| gr.Textbox(label="Odds para CASA vencer"), |
| gr.Textbox(label="Odds para EMPATE"), |
| gr.Textbox(label="Odds para VISITANTE vencer"), |
| gr.Slider(1, 40, label="Percentual Mínimo da Banca (%)", value=1), |
| gr.Slider(10, 100, label="Percentual Máximo da Banca (%)", value=100) |
| ], |
| outputs="text", |
| title="Redução de Risco em Apostas", |
| 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." |
| ) |
|
|
| iface.launch() |