{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "58a44d93-676f-4b67-a2a0-af39673f1680", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "* Running on local URL: http://127.0.0.1:7860\n", "\n", "To create a public link, set `share=True` in `launch()`.\n" ] }, { "data": { "text/html": [ "
" ], "text/plain": [ "Escudo no encontrado
\"\n", "\n", "def asignar_color_resultado(local, visitante):\n", " if local > visitante:\n", " return \"green\"\n", " elif local < visitante:\n", " return \"red\"\n", " else:\n", " return \"blue\"\n", "\n", "# Tu función corregida y definitiva\n", "\n", "# Diccionario global para almacenar predicciones de partidos\n", "predicciones_guardadas = {}\n", "\n", "def predecir(equipo_local, equipo_visitante):\n", " global predicciones_guardadas # Para modificar la variable global\n", " \n", " clave_partido = (equipo_local, equipo_visitante)\n", "\n", " # ✅ Si la predicción ya existe, usarla\n", " if clave_partido in predicciones_guardadas:\n", " prob_max, resultado_max, resultado_html, estadisticas_html, tabla_historial_html = predicciones_guardadas[clave_partido]\n", " else:\n", " # ✅ Generar la predicción solo si no existe aún\n", " prob_max = np.random.uniform(40, 60)\n", " resultado_max = \"Victoria Local\" if prob_max > 50 else \"Victoria Visitante\"\n", " color_resultado = \"green\" if prob_max > 50 else \"red\"\n", " enfrentamientos = df[\n", " ((df[\"Equipo_Local\"] == equipo_local) & (df[\"Equipo_Visitante\"] == equipo_visitante)) |\n", " ((df[\"Equipo_Local\"] == equipo_visitante) & (df[\"Equipo_Visitante\"] == equipo_local))\n", " ].sort_values(by=\"Fecha\", ascending=False).head(10)\n", "\n", " # ✅ Verificar si hay enfrentamientos previos\n", " if enfrentamientos.empty:\n", " print(f\"⚠️ No hay enfrentamientos previos entre {equipo_local} y {equipo_visitante}.\")\n", " \n", " # Retornar valores vacíos para evitar el error de Gradio\n", " return (\n", " f\"⚠️ No hay datos suficientes para predecir este partido.
\",\n", " \"\",\n", " \"No hay historial de enfrentamientos.
\"\n", " )\n", "\n", " # ✅ Calcular promedio de goles en los enfrentamientos\n", " goles_equipo_A = enfrentamientos.apply(\n", " lambda row: row[\"Goles_Local\"] if row[\"Equipo_Local\"] == equipo_local else row[\"Goles_Visitante\"], axis=1\n", " )\n", " goles_equipo_B = enfrentamientos.apply(\n", " lambda row: row[\"Goles_Local\"] if row[\"Equipo_Local\"] == equipo_visitante else row[\"Goles_Visitante\"], axis=1 \n", " )\n", " promedio_goles_equipo_A = goles_equipo_A.mean() if not goles_equipo_A.empty else 0\n", " promedio_goles_equipo_B = goles_equipo_B.mean() if not goles_equipo_B.empty else 0\n", "\n", " \n", " \n", "\n", " ultimos_10_local = df[df[\"Equipo_Local\"] == equipo_local].sort_values(by=\"Fecha\", ascending=False).head(10)\n", " ultimos_10_visitante = df[df[\"Equipo_Visitante\"] == equipo_visitante].sort_values(by=\"Fecha\", ascending=False).head(10)\n", "\n", " prom_goles_local = ultimos_10_local[\"Goles_Local\"].mean()\n", " prom_tiros_local = ultimos_10_local[\"Tiros_Puerta_Local\"].mean()\n", " prom_corners_local = ultimos_10_local[\"Corners_Local\"].mean()\n", "\n", " prom_goles_visitante = ultimos_10_visitante[\"Goles_Visitante\"].mean() \n", " prom_tiros_visitante = ultimos_10_visitante[\"Tiros_Puerta_Visitante\"].mean()\n", " prom_corners_visitante = ultimos_10_visitante[\"Corners_Visitante\"].mean()\n", "\n", "\n", " # ✅ Calcular la efectividad de gol (% de tiros que terminan en gol)\n", " efectividad_local = ( prom_goles_local / prom_tiros_local * 100) if prom_tiros_local > 0 else 0\n", " efectividad_visitante = (prom_goles_visitante / prom_tiros_visitante * 100) if prom_tiros_visitante > 0 else 0\n", "\n", " resultado_max = \"Victoria Local\" if prob_max > 50 else \"Victoria Visitante\"\n", " color_resultado = \"green\" if prob_max > 50 else \"red\"\n", "\n", " resultado_html = f\"\"\"\n", "🏟️ Estadio: {estadios[equipo_local]['estadio']}
\n", "📊 Capacidad: {estadios[equipo_local]['capacidad']} espectadores
\n", "