为了世界杯,我拆解了2G的数据,开源了世界杯数据分析预测系统纯后端:FastAPI + XGBoost + DeepSeek

1 阅读9分钟

从数据采集、特征工程到机器学习预测 + LLM 深度分析,完整的数据闭环。正值2026世界杯激战正酣,这套系统也许能给你带来不一样的看球视角。

2026年美加墨世界杯正在火热进行中,全世界的目光都聚焦在绿茵场上。作为一名技术爱好者,我一直在思考:能否用数据和模型去“理解”足球比赛的走势?经过一段时间的摸索,我把自己的成果整理开源了——一套足球比赛智能预测系统,它不依赖玄学,而是基于历史数据、机器学习和大语言模型,尝试给出可解释的比赛分析。

项目地址:github.com/ai7zym/ai-f… star 交流)

⚠️ 免责声明:本项目仅供技术研究和数据分析学习,不构成任何决策建议。预测结果存在不确定性,请理性看待。

一、这套系统能做什么?

简单说,这是一个从数据同步到模型预测再到LLM分析的完整后端系统:

· 自动从足球数据API拉取联赛、球队、球员、积分榜、赛程、实时比分等信息,存入MySQL

· 基于XGBoost模型预测胜平负、大小球和进球期望

· 使用泊松分布生成Top 3参考比分

· 调用DeepSeek大模型综合球队背景和模型输出,生成接近分析师风格的文字报告

· 提供REST API和命令行工具,方便接入前端、机器人或自动化脚本

· 支持赛后复盘回填,用于统计模型命中情况

目前基于已有数据的测试中,胜负方向的预测准确率约80%,比分方向的准确率约60%(数据截至2026年6月15日,含世界杯小组赛已完赛数据,仅限学术统计)。

二、为什么选在现在开源?

2026年世界杯是一个绝佳的试验场。本届世界杯小组赛阶段已经进行了大量比赛,这套系统恰好完成了全部小组赛的数据整理和模型回测。你可以直接用项目提供的SQL数据快速启动,然后针对剩余淘汰赛进行预测分析,或者复盘已经结束的比赛——看看模型“猜”对了哪些冷门,又在哪些强强对话中失手。这是一次将数据科学应用于真实大型赛事的完整实践。

三、技术栈

层级 技术

后端框架 FastAPI + Uvicorn

数据库 MySQL + SQLAlchemy + Alembic

机器学习 XGBoost, scikit-learn, pandas, numpy

比分建模 泊松分布 (Poisson)

大模型 DeepSeek API

任务调度 内置调度器 + 手动触发

日志 Loguru

命令行 Typer + Rich

整个项目采用模块化设计,后端服务、预测逻辑、模型训练、同步工具分离,便于按需使用和二次开发。

四、核心设计思路

  1. 完整的数据闭环

从上游API拉取原始数据 → 存入MySQL → 特征工程生成特征 → 模型训练 → 在线预测 → 赛后回填命中结果。每一场比赛的数据流转清晰可追溯。

  1. 多模型组合

· XGBoost:输出胜平负概率、大小球概率、主客队预期进球数

· 泊松分布:基于预期进球生成比分概率分布,提取Top 3比分

· DeepSeek LLM:接收模型输出的概率、球队近期状态、联赛背景等信息,生成连贯的分析文本,让预测结果更具解释性

  1. 模型回退机制

优先使用联赛专属模型(如英超单独训练),若不存在则回退到赛事组模型(如世界杯),最后回退到全局模型。保证覆盖尽可能多的比赛。

  1. 调度与自动化

支持定时同步赛程、积分榜、球员数据,也支持手动触发单次同步。自动预测任务会按配置扫描未预测的比赛并生成结果,完赛后自动回填命中情况。


五、快速上手指南

方式一:直接使用已提供的SQL数据(推荐)

如果你想快速体验预测功能,可以获取截止到2026年6月15日的完整数据库SQL导出文件(包含世界杯小组赛所有数据,体积较大,未放入GitHub,可联系作者获取)。


git clone https://github.com/ai7zym/api-football.git

cd api-football/backend


# 创建虚拟环境

python -m venv .venv

source .venv/bin/activate # Linux/Mac

# 或 .venv\Scripts\activate (Windows)


# 安装依赖

pip install -r requirements.txt


# 创建数据库并导入SQL

mysql -u root -p -e "CREATE DATABASE football CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

mysql -u root -p football < dump-football-api-202606151047.sql


# 配置环境变量

cp .env.example .env

# 编辑 .env 填入数据库密码、API Key等


# 启动服务

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

启动后访问 http://127.0.0.1:8000/docs 查看自动生成的API文档。

方式二:从零开始初始化数据

如果没有现成SQL,可以先执行数据库迁移,然后按顺序触发同步接口:


cd backend

alembic upgrade head

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

依次调用:


curl -X POST http://127.0.0.1:8000/api/scheduler/leagues/sync

curl -X POST http://127.0.0.1:8000/api/scheduler/teams/sync

curl -X POST http://127.0.0.1:8000/api/scheduler/fixtures/sync

# ... 其他同步任务

注意:你需要申请API-Football的访问权限,并在.env中配置API_FOOTBALL_KEY。


六、API使用示例

查询指定日期的比赛列表


curl "http://127.0.0.1:8000/api/fixtures?date=2026-06-13&page=1&page_size=20"

触发单场比赛预测


curl -X POST http://127.0.0.1:8000/api/predict/123456

返回结果包含四个主要部分:

字段 说明

basic 比赛基本信息(球队、联赛、时间、状态)

xgb 模型输出:胜平负概率、大小球概率、预期进球、Top3比分

llm 大模型分析:胜负推荐、比分推荐、让球推荐、深度文本分析

result 完赛后回填的真实比分和命中情况

批量查询预测结果


curl "http://127.0.0.1:8000/api/predictions?date=2026-06-13&category=worldcup&page=1&page_size=20"

支持按日期、联赛、比赛分类筛选。


七、命令行工具

除了API,项目还提供了几个实用的CLI工具:

命令 功能

python tools/manual_predict.py 交互式手动预测,适合调试单场比赛

python tools/batch_predict.py 批量预测,可指定日期范围

python prediction/train.py 重新训练模型(需自行准备特征数据)

python prediction/features.py 生成特征宽表

这些工具都使用Rich库美化了输出,在终端里运行体验很好。


八、项目结构解读


api-football/

├── backend/

│ ├── main.py # FastAPI入口

│ ├── requirements.txt

│ ├── .env.example

│ ├── app/

│ │ ├── api/ # REST API路由

│ │ ├── core/ # 配置、日志

│ │ ├── db/ # 数据库会话

│ │ ├── models/ # ORM模型

│ │ ├── schemas/ # 请求/响应结构

│ │ └── services/ # 同步、调度、预测核心服务

│ ├── prediction/ # 模型与预测逻辑

│ │ ├── models/ # 已训练的模型文件

│ │ ├── features.py

│ │ ├── predict.py

│ │ └── train.py

│ └── tools/ # 命令行辅助工具

├── .gitignore

└── README.md

如果你想修改特征工程、替换模型或调整调度策略,都可以在对应模块中找到清晰的入口。


九、效果示例:预测2026世界杯某场小组赛

假设我们调用预测接口分析一场世界杯小组赛(例如:阿根廷 vs 尼日利亚),模型返回的结果大致如下(示例):

XGBoost输出:

主胜概率52%,平局25%,客胜23%

大小球倾向:小球(≤2.5球)概率68%

预期进球:主队1.8,客队0.9

泊松分布Top 3比分:

2-0(12.3%),1-0(11.5%),2-1(9.8%)

DeepSeek分析(摘要):

“阿根廷队在中前场控制力上占据明显优势,近期梅西状态火热;尼日利亚防守反击有一定威胁但整体实力存在差距。模型预期阿根廷净胜1-2球,推荐方向:主胜。”

实际比赛结束后,系统可以通过赛后回填接口自动记录真实比分与预测的命中情况,用于后续分析和模型调优。


十、已知局限与后续计划

当前局限

· 模型依赖上游数据API的稳定性和完整性

· 特征工程主要基于近期状态、主客场表现、积分榜、历史交锋等,未引入球员身价、伤病、天气等细粒度数据

· 泊松分布假设进球之间相互独立,与实际比赛有一定偏差

· LLM分析会增加响应时间,且需要有效的API Key

后续计划

· 支持更多联赛(尤其是世界杯参赛队所在联赛)的专属模型训练

· 引入实时数据作为特征(仅用于学术研究)

· 优化特征缓存,减少重复计算

· 提供Docker Compose一键启动方案

· 增加模型版本管理和A/B测试能力


十一、常见问题

Q:预测失败返回400?

A:请检查对应比赛是否有完整的数据(球队、积分榜、近期战绩),以及联赛是否处于启用状态。可以查看日志定位具体缺失的特征。

Q:LLM分析不生效?

A:确认.env中配置了DEEPSEEK_API_KEY和正确的DEEPSEEK_BASE_URL,并且网络可以访问该API。

Q:为什么GitHub上没有SQL文件?

A:原始SQL导出文件体积较大(数百MB),不适合直接放入Git仓库。需要完整数据的可以联系作者获取,后续也会在Release中提供压缩包。

Q:可以用于商业项目吗?

A:目前仓库未声明具体开源许可证,建议商用前先与作者沟通确认授权方式。


写在最后

2026世界杯正在上演无数精彩瞬间,而数据的魅力在于它能让我们从另一个维度理解比赛。这个项目是我在学习数据工程和机器学习过程中的一个综合性实践——从API数据同步、数据库设计、特征构建到模型训练、LLM集成,涵盖了后端开发的多个方面。

如果你也在做类似方向的项目,或者想基于真实的世界杯数据练手,欢迎star、fork或提出改进建议。希望这个项目能为你提供一些参考。

GitHub地址: github.com/ai7zym/api-…

数据截止时间: 2026年6月15日(世界杯小组赛全部数据已整理完毕)

再次强调:本项目仅限技术研究与学习,请勿用于任何违反法律法规的用途。预测结果仅供参考,风险自负。

如果这篇文章对你有帮助,欢迎点赞、收藏、转发,让更多技术同好看到这个项目。我会持续维护和更新,也期待你的反馈和贡献!