实用脚本统计弧线球传中精准度如何?

wen 实用脚本 1

本文目录导读:

实用脚本统计弧线球传中精准度如何?

  1. 足球/体育数据分析场景
  2. FIFA/实况类游戏场景
  3. 视频/轨迹追踪场景(CV)
  4. 关键指标建议

足球/体育数据分析场景

如果你有传中事件数据(起点、终点、是否找到队友),核心是用落点与目标点的距离衡量精准度:

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)}

关键指标建议

指标 含义
落点误差 实际落点与意图落点距离
精准率 误差 ≤ 阈值的比例
成功率 找到队友的比例
弧线幅度 轨迹偏离直线的程度
传中转化率 后续是否形成射门/进球

你具体是哪个场景? 是:

  1. 真实比赛数据(Opta/StatsBomb 之类)
  2. 足球游戏
  3. 视频追踪/自建数据
  4. 其他(比如机械臂/乒乓球发球)

告诉我我可以把脚本改成直接能跑的版本。

抱歉,评论功能暂时关闭!