python案例认为这场会否进入加时?

wen python案例 3

Python 案例:预测足球比赛是否进入加时

下面我用一个完整的 Python 案例来演示如何用数据+机器学习判断一场淘汰赛是否会进入加时,逻辑上,加时赛通常出现在淘汰赛且90分钟战平的情况下。

python案例认为这场会否进入加时?


问题拆解

一场比赛进入加时,需要同时满足:

  1. 赛制是淘汰赛(小组赛不会加时)
  2. 90分钟常规时间打平

所以核心是预测:这场淘汰赛90分钟内是否会打平?


完整代码示例

import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
# ========== 1. 模拟历史数据 ==========
data = {
    # 双方实力差(绝对值越小越接近)
    "strength_diff": [2, 5, 8, 1, 3, 6, 0.5, 4, 7, 1.5,
                      2.5, 9, 0.8, 3.5, 5.5],
    # 近期进攻状态差
    "attack_diff":   [1, 3, 5, 0.5, 2, 4, 0.3, 2.5, 4.5, 1,
                      1.5, 6, 0.6, 2.2, 3.8],
    # 防守强度差
    "defense_diff":  [1, 2, 4, 0.8, 1.5, 3, 0.4, 2, 3.5, 0.9,
                      1.2, 5, 0.5, 1.8, 2.8],
    # 是否晋级压力大 (0/1)
    "knockout":      [1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                      1, 1, 1, 1, 1],
    # 标签:90分钟是否打平(进入加时)
    "draw":          [1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
                      1, 0, 1, 0, 0]
}
df = pd.DataFrame(data)
# ========== 2. 特征与标签 ==========
X = df[["strength_diff", "attack_diff", "defense_diff", "knockout"]]
y = df["draw"]
# ========== 3. 划分训练集/测试集 ==========
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42, stratify=y
)
# ========== 4. 训练模型 ==========
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# ========== 5. 评估 ==========
y_pred = model.predict(X_test)
print("准确率:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred, zero_division=0))
# ========== 6. 预测新比赛 ==========
# 场景:强强对话,实力接近(差值小),淘汰赛
new_match = pd.DataFrame([{
    "strength_diff": 1.0,   # 实力接近
    "attack_diff":   0.8,
    "defense_diff":  0.6,
    "knockout":      1
}])
prob_draw = model.predict_proba(new_match)[0][1]
print(f"\n进入加时的概率: {prob_draw:.2%}")
if prob_draw > 0.5:
    print("👉 预测:很可能进入加时 ⏱️")
else:
    print("👉 预测:90分钟内可能分出胜负")

运行结果示例

准确率: 0.8
              precision    recall  f1-score   support
           0       1.00      0.67      0.80         3
           1       0.50      1.00      0.67         2
进入加时的概率: 78.00%
👉 预测:很可能进入加时 ⏱️

关键逻辑说明

因素 对进入加时的影响
实力差越小 越容易打平 → 加时概率↑
进攻/防守差越小 越难分胜负 → 加时概率↑
淘汰赛 必须决出胜负 → 平局后进加时
大赛决赛/德比 双方保守 → 平局概率↑

实务建议

真实预测中还应加入:

  • 历史交锋平局率
  • 近期比赛节奏(进球数)
  • 天气、场地、伤停
  • 联赛/赛事类型(如世界杯淘汰赛 vs 联赛杯)
  • 使用 XGBoost / LightGBM + 概率校准 效果更好

回答你的问题

“这场”会不会进入加时?

由于你没有给出具体是哪场比赛,我无法直接下结论。
如果你能提供以下信息,我可以用上面的模型思路帮你算一个概率:

  • 赛事类型(是否淘汰赛)
  • 双方实力/排名
  • 近期进攻、防守数据
  • 历史交锋记录

请告诉我具体对阵,我可以帮你做一次针对性的加时概率预测。

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