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)