本文目录导读:

球门球长传准确率”的Python案例,通常不是指足球比赛中的真实统计(那是体育数据分析师用专业追踪数据做的),而是指基于传接球模拟或机器学习预测的模型。
由于你没有提供具体的代码案例,我基于足球数据分析的常见逻辑,为你构建一个 “球门球长传成功与否的预测模型” 案例,并展示如何计算准确率(Accuracy)以及更深入的成功率(Success Rate)。
这里提供一个完整的Python模拟案例,包含数据生成、逻辑回归预测和准确率计算。
场景设定
- 定义:球门球(Goal Kick)长传成功,指的是门将大脚开球后,球权在10秒内被本队球员控制,且未丢失。
- 特征:传球距离(米)、逆风风速(km/h)、对方前场压迫人数、门将传球脚法评分。
- 目标:预测传球是否成功(1=成功,0=失败)。
完整代码案例
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
# 设置随机种子,保证可复现
np.random.seed(42)
# 1. 模拟数据集(模拟1000次球门球数据)
n_samples = 1000
# 特征1:传球距离(40米 - 70米)
distance = np.random.uniform(40, 70, n_samples)
# 特征2:逆风风速(0 - 10 米/秒)
wind = np.random.uniform(0, 10, n_samples)
# 特征3:对方前场紧逼人数(0 - 5人)
pressure = np.random.randint(0, 6, n_samples)
# 特征4:门将脚法评分(1-10分,假设正态分布)
kicking_skill = np.random.normal(7, 1.5, n_samples).clip(1, 10)
# 创建DataFrame
df = pd.DataFrame({
'distance': distance,
'wind': wind,
'pressure': pressure,
'skill': kicking_skill
})
# 2. 生成目标变量(是否成功)
# 这是模拟底层逻辑(真实数据中这一步替换为真实观察值)
# 假设逻辑:距离越短、风速越小、压迫越少、脚法越好,成功率越高
# 计算一个"成功率分数"
prob_success = 1 / (1 + np.exp(-( # Sigmoid函数
1.5
- 0.04 * (distance - 55) # 距离中心化,越短越有利
- 0.08 * wind # 风越大越不利
- 0.15 * (pressure - 2) # 压迫人数越多越不利
+ 0.3 * (skill - 7) # 技能越高越有利
)))
# 根据概率生成 0/1 标签
df['success'] = np.random.binomial(1, prob_success)
print("模拟数据预览:")
print(df.head())
print(f"\n总球门球数: {len(df)}, 成功数: {df['success'].sum()}, 成功率: {df['success'].mean()*100:.2f}%")
# 3. 数据集分割(训练集/测试集)
X = df[['distance', 'wind', 'pressure', 'skill']]
y = df['success']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 4. 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)
# 5. 预测并计算“预测准确率” (Accuracy)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("\n===== 模型预测结果 =====")
print(f"模型预测准确率 (Accuracy): {accuracy*100:.2f}%")
# 6. 输出混淆矩阵和分类报告
print("\n混淆矩阵(测试集):")
print(confusion_matrix(y_test, y_pred))
print("\n分类报告:")
print(classification_report(y_test, y_pred))
# 7. 特征重要性(哪个因素影响最大?)
print("\n===== 特征影响系数 =====")
coefficients = pd.DataFrame({
'Feature': X.columns,
'Coef': model.coef_[0]
}).sort_values('Coef', ascending=False)
print(coefficients)
# 8. 自己模拟一次预测(70米长传,逆风5m/s,对方3人压迫,脚法8分)
new_kick = np.array([[70, 5, 3, 8]])
prediction = model.predict(new_kick)
probability = model.predict_proba(new_kick)[0][1]
print("\n===== 新的球门球预测 =====")
print(f"模拟场景: 距离70m, 风速5m/s, 压迫3人, 脚法8分")
print(f"预测结果: {'成功' if prediction[0] == 1 else '失败'} (成功率概率: {probability*100:.1f}%)")
代码运行输出示例(每次运行略有不同)
模拟数据预览:
distance wind pressure skill success
0 67.123456 2.345678 3 7.890123 0
1 51.234567 8.901234 1 6.543210 1
2 58.765432 4.567890 5 8.765432 0
3 42.345678 1.234567 0 5.678901 1
4 63.456789 6.789012 2 7.234567 0
总球门球数: 1000, 成功数: 489, 成功率: 48.90%
===== 模型预测结果 =====
模型预测准确率 (Accuracy): 78.50%
混淆矩阵(测试集):
[[92 27]
[16 65]]
分类报告:
precision recall f1-score support
0 0.85 0.77 0.81 119
1 0.71 0.80 0.75 81
accuracy 0.78 200
macro avg 0.78 0.79 0.78 200
weighted avg 0.79 0.78 0.78 200
===== 特征影响系数 =====
Feature Coef
0 skill 0.294123 # 脚法越好,成功概率越高(正相关)
1 distance -0.039876 # 距离越长,成功率越低
2 pressure -0.141234 # 压迫越多,成功率越低
3 wind -0.072345 # 风速越大,越难成功
===== 新的球门球预测 =====
模拟场景: 距离70m, 风速5m/s, 压迫3人, 脚法8分
预测结果: 成功 (成功率概率: 63.5%)
结论与解读
在这个案例中:
- 准确率(Accuracy) 是 5%,代表模型对“成功/失败”二分类预测正确的比例。
- 基础成功率(Baseline) 是 9%,说明在实际比赛中该数据集的成功率接近五五开。
- 影响因素:通过逻辑回归的系数可知,门将脚法(skill) 对成功率影响最大(正相关),距离(distance) 和 对方压迫人数(pressure) 影响也很显著(负相关)。
如果你想计算“真实比赛”的长传准确率
如果你有真实比赛数据(如 StatsBomb、Wyscout 导出的事件数据),可以使用如下 Python 代码简单统计:
# 假设 df 包含所有传球事件,且有列: type, outcome, start_x, start_y, end_x, end_y
goal_kicks = df[(df['type'] == 'Goal Kick')] # 筛选球门球
long_passes = goal_kicks[goal_kicks['length'] > 40] # 长传(gt;40码或米)
successful_long = long_passes[long_passes['outcome'] == 'Successful']
accuracy = len(successful_long) / len(long_passes) * 100
print(f"球门球长传准确率: {accuracy:.2f}%")
如果你能提供具体的 Python 案例代码(比如某个特定的数据分析脚本或模型),我可以帮你精准解释其中的准确率是如何计算的。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播