本文目录导读:

分析球员之间的默契程度,在开源项目中通常可以拆解为数据层、指标层、模型层和可视化层四个部分,下面从这几个维度展开说明。
核心思路
默契本质上是两名或多名球员在时空上的协同行为模式,可以从三个角度量化:
| 维度 | 含义 | 示例 |
|---|---|---|
| 空间协同 | 跑位是否互补/重叠 | 传球线路、覆盖区域 |
| 时间同步 | 动作是否连贯及时 | 传跑时机、二过一 |
| 效果增益 | 配合是否产生超额价值 | 预期进球增量、推进效率 |
数据来源(开源)
- 事件数据:StatsBomb Open Data、Wyscout 公开样本
- 追踪数据:Metrica Sports、SkillCorner 公开样本
- 视频数据:SoccerNet、dfdc(用于计算机视觉提取)
常用量化指标
传球网络类
# 传球网络中的边权 = 传球次数 / 成功率 / 推进距离
passing_network[player_i][player_j] = {
"count": n,
"success_rate": s,
"avg_progression": d,
"xt_added": xT # 预期威胁增量
}
- 传球频率矩阵:谁经常传给谁
- 互传对称性:A→B 与 B→A 的比例
- 聚类系数:小团体识别(如巴萨的 tiki-taka 三角)
空间协同类
- 平均位置距离:两名球员平均站位距离
- 空间重叠度:用核密度估计(KDE)计算热区重叠
- 覆盖互补性:
1 - IoU(热区A, 热区B)
时间同步类(需追踪数据)
- 同步跑动检测:速度/加速度序列的互相关
- 传跑时差:接球者启动时间 vs 传球时间
- DTW 距离:动态时间规整衡量轨迹相似度
效果增益类
- xT / xG 增量:该组合参与进攻的期望值
- 推进效率:每次配合向前推进的米数
- 超额表现:实际进球 - 预期进球(配合后的)
建模方法
方法 1:图神经网络
# 把球员当作节点,传球/跑动关系当作边
import torch_geometric as tg
class ChemistryGNN(tg.nn.GCNConv):
# 输入:节点特征(位置、技术统计) + 边特征(传球频率、成功率)
# 输出:每对球员的默契分数
方法 2:协同过滤
把球员当作 item,把“成功配合”当作交互,用矩阵分解学习隐向量:
默契(A,B) ≈ <embedding_A, embedding_B>
方法 3:序列模型
用 Transformer 建模比赛事件序列,注意力权重可解释为默契度:
# attention[player_i][player_j] 高 → 两人频繁互动
方法 4:统计检验
- 置换检验:随机打乱队友,看实际配合是否显著高于随机
- 贝叶斯层次模型:分离球员个人能力与组合效应
开源项目参考
| 项目 | 用途 |
|---|---|
| mplsoccer | 传球网络、热图可视化 |
| socceraction | 将事件数据转为 SPADL,计算 xT |
| statsbombpy | 拉取 StatsBomb 开放数据 |
| footballscout / kloppy | 追踪数据加载与对齐 |
| PyG / DGL | 图神经网络建模球员关系 |
| networkx | 传球网络分析(中心性、社区发现) |
典型分析流程
数据获取 → statsbombpy 拉取比赛事件
2. 数据清洗 → socceraction 转 SPADL
3. 构建网络 → networkx 建传球图
4. 特征工程 → 传球频率、xT、空间重叠
5. 建模 → GNN / 矩阵分解 / 序列模型
6. 可视化 → mplsoccer 画网络图 + 热区叠加
7. 验证 → 与教练评分/比赛结果对比
难点与注意事项
- 样本量不足:一对球员同场时间有限 → 需跨赛季/跨赛事聚合
- 混淆因素:默契 vs 个人能力强 → 需控制变量
- 位置依赖:前锋-中场 vs 中卫-中卫,默契定义不同
- 追踪数据稀缺:开源追踪数据远少于事件数据
- 可解释性:教练需要知道为什么默契高,而不只是分数
一个最小示例
import networkx as nx
from statsbombpy import sb
# 1. 拉取比赛事件
events = sb.events(match_id=3788741)
# 2. 构建传球网络
G = nx.DiGraph()
passes = events[events['type'] == 'Pass']
for _, p in passes.iterrows():
if p['pass_outcome'] is None: # 成功传球
G.add_edge(p['player'], p['pass_recipient'])
# 3. 计算默契指标
for u, v in G.edges():
count_uv = G[u][v]['weight']
count_vu = G[v][u]['weight'] if G.has_edge(v, u) else 0
symmetry = min(count_uv, count_vu) / max(count_uv, count_vu)
print(f"{u} ↔ {v}: 传球{count_uv}, 对称性{symmetry:.2f}")
开源项目分析默契的核心公式可以概括为:
默契 = f(交互频率, 交互质量, 空间互补性, 时间同步性, 效果增益) - 个人能力基线
实际落地时,事件数据 + 传球网络 + xT 是最易实现的组合;若追求深度,则需引入追踪数据 + GNN/Transformer。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播