Zing 论坛

正文

PuckZone:基于机器学习的NHL冰球比赛预测系统

一个使用Python、scikit-learn和Supabase构建的NHL冰球比赛结果预测模型,涵盖常规赛和季后赛,包含51-55个特征的综合特征工程管道。

NHL冰球预测机器学习特征工程scikit-learn体育数据科学Elo评分预期进球
发布时间 2026/06/07 08:46最近活动 2026/06/07 08:50预计阅读 3 分钟
PuckZone:基于机器学习的NHL冰球比赛预测系统
1

章节 01

导读 / 主楼:PuckZone:基于机器学习的NHL冰球比赛预测系统

一个使用Python、scikit-learn和Supabase构建的NHL冰球比赛结果预测模型,涵盖常规赛和季后赛,包含51-55个特征的综合特征工程管道。

3

章节 03

项目概述

PuckZone是一个专为NHL(北美职业冰球联赛)设计的机器学习预测系统,能够预测常规赛和季后赛的比赛结果。该项目基于2017-18至2025-26赛季的历史比赛数据,通过综合特征工程管道构建预测模型。

4

章节 04

数据架构与基础设施

项目采用现代化的数据架构设计。比赛数据通过NHL官方API获取,并存储在Supabase数据库中。数据摄取由配套的my-puckzone-ingest项目负责,确保数据的实时性和完整性。这种架构设计使得模型能够处理跨越八个赛季的庞大数据集,同时保持数据的一致性和可追溯性。

5

章节 05

特征工程管道

项目的核心创新在于其统一的特征工程管道(pipeline.py),这是整个系统的单一入口点。该管道消除了训练-服务偏差(train/serve skew),确保训练环境和生产环境使用完全相同的特征计算逻辑。

特征管道包含以下关键模块:

  • 比赛数据加载:加载常规赛和季后赛的已完成比赛
  • 球队排名快照:每日球队排名统计
  • 守门员表现:基于最近10场比赛的滚动扑救率
  • 球队效率统计:包括多打少成功率(PP%)、争球成功率、射门次数等
  • Elo评分系统:逐场比赛更新的Elo评分
  • 高级统计:Corsi、预期进球(xG)、高危机会占比等
  • 球员统计:用于预测球员得分的滚动统计数据
  • 射门事件:射门事件和xG特征构建
  • 季后赛背景:系列赛胜负和种子排名信息
6

章节 06

模型体系

项目包含六个独立的预测模型,每个针对特定的预测任务:

模型 预测目标 特征数量 训练数据
win_model.pkl 主/客场获胜概率 51 2017-25赛季常规赛
playoff_model.pkl 季后赛获胜概率 55 2018-25赛季季后赛
score_model.pkl 主/客场得分 51 2017-25赛季常规赛
playoff_score_model.pkl 季后赛得分 51 2018-25赛季季后赛
player_model.pkl 球员是否得分 - 2017-25赛季球员数据
xg_model.pkl 射门是否进球 - 2017-25赛季所有射门事件
7

章节 07

DataContext注入模式

项目采用可注入的DataContext设计,允许在单元测试中使用内存数据,无需连接真实的Supabase数据库。这种设计大大提高了代码的可测试性:

from features.pipeline import DataContext, build_feature_row

ctx = DataContext(
    games=my_games_df,
    standings=my_standings_df,
    goalie_df=my_goalie_df,
    # ... 其他数据框
)
row = build_feature_row(home_id, away_id, game_date, ctx)
8

章节 08

滚动原点回测

项目实现了滚动原点回测框架(walk-forward backtest),每个赛季作为独立的测试折,使用所有之前赛季的数据进行训练。这种方法比单一赛季留出法更能评估模型的真实泛化能力。回测报告包括对数损失、Brier分数、ROC AUC和校准度等指标。