本文目录导读:

足球/体育数据分析场景
如果你有传中事件数据(起点、终点、是否找到队友),核心是用落点与目标点的距离衡量精准度:
import pandas as pd
import numpy as np
def curl_cross_accuracy(df, target_col='target_point',
landing_col='landing_point',
success_col='found_teammate',
distance_threshold=2.0):
"""
df: 每行一次弧线球传中
target_point / landing_col: (x, y) 坐标元组
success_col: 是否找到队友
distance_threshold: 米,落点距目标点小于该值算精准
"""
df = df.copy()
df['distance_error'] = df.apply(
lambda r: np.linalg.norm(
np.array(r[landing_col]) - np.array(r[target_col])
), axis=1
)
df['is_accurate'] = df['distance_error'] <= distance_threshold
df['is_success'] = df[success_col].astype(bool)
stats = {
'总传中数': len(df),
'精准数(落点误差≤阈值)': int(df['is_accurate'].sum()),
'精准率': round(df['is_accurate'].mean() * 100, 2),
'成功率(找到队友)': round(df['is_success'].mean() * 100, 2),
'平均落点误差(米)': round(df['distance_error'].mean(), 2),
'误差中位数': round(df['distance_error'].median(), 2),
}
return stats, df
进阶可加:
- 按区域分组(左路/右路、禁区内外)
- 按防守压力加权
- xG/xT 增量评估传中质量
FIFA/实况类游戏场景
游戏里没有直接“精准度”数值,通常靠结果反推:
def game_cross_stats(events):
"""
events: [{'type':'cross','result':'success'/'fail'/'cleared',
'distance':..,'angle':..}, ...]
"""
crosses = [e for e in events if e['type']=='cross']
if not crosses:
return {}
success = sum(1 for e in crosses if e['result']=='success')
return {
'尝试次数': len(crosses),
'成功次数': success,
'成功率': f"{success/len(crosses)*100:.1f}%",
'平均距离': round(sum(e['distance'] for e in crosses)/len(crosses),1),
}
视频/轨迹追踪场景(CV)
如果有球的轨迹坐标,可以量化“弧线程度”和“落点精度”:
def trajectory_metrics(points, target):
"""
points: [(x,y), ...] 球飞行轨迹
target: (x,y) 目标落点
"""
import numpy as np
pts = np.array(points)
# 弧线程度:轨迹中点到起终点连线的最大垂直距离
start, end = pts[0], pts[-1]
line_vec = end - start
line_len = np.linalg.norm(line_vec)
if line_len == 0:
curvature = 0
else:
normal = np.array([-line_vec[1], line_vec[0]]) / line_len
curvature = max(abs(np.dot(p - start, normal)) for p in pts)
# 落点误差
landing_error = np.linalg.norm(pts[-1] - np.array(target))
return {'弧线幅度(像素)': round(curvature,2),
'落点误差(像素)': round(landing_error,2)}
关键指标建议
| 指标 | 含义 |
|---|---|
| 落点误差 | 实际落点与意图落点距离 |
| 精准率 | 误差 ≤ 阈值的比例 |
| 成功率 | 找到队友的比例 |
| 弧线幅度 | 轨迹偏离直线的程度 |
| 传中转化率 | 后续是否形成射门/进球 |
你具体是哪个场景? 是:
- 真实比赛数据(Opta/StatsBomb 之类)
- 足球游戏
- 视频追踪/自建数据
- 其他(比如机械臂/乒乓球发球)
告诉我我可以把脚本改成直接能跑的版本。