NBA-Predictor / app.py
henrymalosnok123's picture
Update app.py
b1ed1dd verified
import gradio as gr
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
# Cargar el modelo, scaler y datos hist贸ricos previamente ajustados
# (Aseg煤rate de tener logistic, scaler y tad listos)
logistic = logistic_model_2.pkl # Modelo entrenado
scaler = scaler_2.pkl # Scaler ajustado
tad = tad_2.pkl # DataFrame con datos hist贸ricos
# Funci贸n de predicci贸n adaptada a Gradio
def gradio_predict(team1, team2):
"""
Funci贸n adaptada para Gradio que ejecuta predict_basketball_matchup
"""
resultado = predict_basketball_matchup(team1, team2, logistic, scaler, tad)
# Formateamos la salida
output = f"""
**馃弨 PREDICCI脫N DE ENFRENTAMIENTO 馃弨**
=========================================
**馃敼 {team1}: {resultado['team1_probability']:.1%} probabilidad de victoria**
**馃敼 {team2}: {resultado['team2_probability']:.1%} probabilidad de victoria**
**馃敟 Favorito:** {resultado['favorite']} ({resultado['win_probability']:.1%})
**馃搳 M脡TRICAS COMPARATIVAS**
------------------------------------------
"""
for metric in resultado['metrics_comparison'][team1]:
output += f"馃敻 {metric}: {team1} - {resultado['metrics_comparison'][team1][metric]:.3f} | {team2} - {resultado['metrics_comparison'][team2][metric]:.3f} \n"
return output
# Lista de equipos disponibles
equipos_disponibles = tad["TEAM_NAME"].unique().tolist()
# Interfaz de Gradio
with gr.Blocks() as demo:
gr.Markdown("# 馃弨 Predicci贸n de Partidos NBA")
with gr.Row():
team1 = gr.Dropdown(label="Seleccione el equipo 1", choices=equipos_disponibles)
team2 = gr.Dropdown(label="Seleccione el equipo 2", choices=equipos_disponibles)
btn = gr.Button("馃搳 Predecir Resultado")
resultado_texto = gr.Markdown("")
btn.click(fn=gradio_predict, inputs=[team1, team2], outputs=resultado_texto)
# Lanzar la interfaz
demo.launch(share=True)