Spaces:
Running
Running
Commit History
-
Las features de train, listadas de verdad en cada modelo
Los cuadros de "Features" decían solo "self_* (forma del equipo)". Ahora traen la lista completa, leída de los artefactos reales: - cruce: las 328 de matchup_feat_cols.json, separadas por prefijo — self_ (53), opp_ (157), selfH_ (52) y selfA_ (52) que son el split local/visitante, y 14 de contexto (elo, is_*, form*) - ptiro: las 72 de datasets_variables.json - los dos GNN: leídas del bundle .pt (global_bundle.global_feature_columns) De paso, los .pt traen el summary con los tamaños reales del split, que estaban sin documentar: ataque 8.506/962/1.108 (validación desde el 16-nov-2025, 5 semillas) y peligro 7.395/842/981 (desde el 17-nov-2025). CORRECCIÓN: pv_distribution_gnn NO poda features — usa las 1.069 globales, mientras que el de ataque se queda con 200. Estaba documentado como si compartieran el criterio. Con el mismo dataset (~10.900 filas) eso le deja una proporción features/filas mucho más exigente; queda anotado como candidato a aplicarle la misma poda y medir. Co-Auth…6a437ee
-
team_stats agg: matchid como str (fix de duplicados no colapsados)
matchid tiene valores numéricos (131k) y alfanuméricos (65k). Al leer por chunks, pandas inferenciaba el tipo por chunk → el mismo matchid numérico quedaba int en un chunk y str en otro → no agrupaban → las 2 versiones del equipo-partido NO se colapsaban en ligas con matchid numérico (EPL, La Liga, etc.), inflando n_partidos (~150k→101k) y metiendo la versión espuria en los promedios. Fix: leer matchid y temporada como str. Ahora cada liga da el conteo real (EPL/La Liga = 38 por equipo) y una sola versión consistente por equipo-partido. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>d290f9e -
team_stats agg: elegir la versión consistente del duplicado (posesión vs dominio de pases)
Cada equipo-partido aparece con 2 versiones (conteos idénticos pero posesión y derivadas distintas; una está mal: p.ej. 73% de posesión con menos pases que el rival). En vez de dedup arbitrario, por (equipo, partido) se elige la versión cuya posesión es coherente con el dominio de pases (más pases que el rival → >50%). Efecto: la posesión por liga ahora centra en ~50% (antes una versión espuria inflaba/distorsionaba). Conteos sin cambio. Regenera vendor/data/team_stats_agg.parquet. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1ada03e -
Nueva sección "Equipos y variables": buscar equipos por z-score de variables
Sobre team_stats_all_leagues.csv (stats por partido/equipo de Azure), agregado a un perfil por (liga, temporada, equipo) = promedio por partido. El usuario elige variables y dirección (alto/medio/bajo); se calcula un z-score por variable dentro del pool (liga+temporada, mín. 5 partidos) y un puntaje: alto → z ; bajo → -z ; medio → -|z|. Suma por equipo → top 5 con desglose por variable (valor, z, puntaje). - scripts/build_team_stats_agg.py: baja el CSV (~870 MB), filtra estado "90 mins" (total del partido) + dedup por matchid, agrega → vendor/data/team_stats_agg.parquet (3.8 MB, bundleado; regenerable como matches_catalog). - team_vars.py: carga el agregado + scoring; routes_team_vars.py: /api/team-vars/{options,search}. - home.html: tab "Equipos y variables" (selección de variables + dirección + top 5). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>d1858cc