2025年3月20日国足vs沙特,国足是客场,沙特是主场。可惜上次主场已经是1:2输了比赛,本次是否能够逆天改命,扳回一局,且看AI分析战果。
一、历史战绩
我在网上查询到中国VS沙特的历史战绩如下:
比赛日期 | 赛事 | 比分(中国 : 沙特) | 结果 | 比赛地点 |
1978-12-12 | 亚洲杯小组赛 | 0 : 1 | 负 | 曼谷(泰国) |
1981-01-28 | 世界杯预选赛 | 0 : 2 | 负 | 达曼(沙特) |
1981-02-12 | 世界杯预选赛 | 2 : 0 | 胜 | 北京(中国) |
1984-12-16 | 亚洲杯小组赛 | 0 : 0 | 平 | 新加坡 |
1988-12-03 | 亚洲杯半决赛 | 0 : 1 | 负 | 多哈(卡塔尔) |
1990-08-18 | 友谊赛 | 1 : 2 | 负 | 吉达(沙特) |
1990-08-22 | 友谊赛 | 0 : 0 | 平 | 吉达(沙特) |
1993-10-15 | 世界杯预选赛 | 1 : 1 | 平 | 多哈(卡塔尔) |
1997-09-19 | 世界杯预选赛 | 0 : 1 | 负 | 利雅得(沙特) |
1997-10-31 | 世界杯预选赛 | 1 : 1 | 平 | 大连(中国) |
2007-07-15 | 亚洲杯小组赛 | 2 : 0 | 胜 | 雅加达(印尼) |
2009-06-04 | 友谊赛 | 1 : 4 | 负 | 广州(中国) |
2013-02-06 | 亚洲杯预选赛 | 1 : 2 | 负 | 多哈(卡塔尔) |
2014-11-18 | 亚洲杯预选赛 | 0 : 0 | 平 | 广州(中国) |
2021-10-12 | 世界杯预选赛 | 2 : 3 | 负 | 吉达(沙特) |
2022-03-24 | 世界杯预选赛 | 1 : 1 | 平 | 苏州(中国) |
2024-01-21 | 亚洲杯小组赛 | 0 : 2 | 负 | 多哈(卡塔尔) |
2024-09-10 | 世界杯预选赛 | 1 : 2 | 负 | 大连(中国) |
总成绩统计:
总场次:17场
中国胜场:2场
平局:6场
中国负场:9场
进球数:12球
失球数:21球
二,使用数据进行训练
将以上数据进行整理,放入到python代码中。
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import LabelEncoder, StandardScaler
import numpy as np
# 1. 数据准备
data = {
'比赛日期': ['1978-12-12', '1981-01-28', '1981-02-12', '1984-12-16', '1988-12-03', '1990-08-18',
'1990-08-22', '1993-10-15', '1997-09-19', '1997-10-31', '2007-07-15', '2009-06-04',
'2013-02-06', '2014-11-18', '2021-10-12', '2022-03-24', '2024-01-21', '2024-09-10'],
'赛事': ['亚洲杯小组赛', '世界杯预选赛', '世界杯预选赛', '亚洲杯小组赛', '亚洲杯半决赛', '友谊赛',
'友谊赛', '世界杯预选赛', '世界杯预选赛', '世界杯预选赛', '亚洲杯小组赛', '友谊赛',
'亚洲杯预选赛', '亚洲杯预选赛', '世界杯预选赛', '世界杯预选赛', '亚洲杯小组赛', '世界杯预选赛'],
'比分(中国 : 沙特)': ['0 : 1', '0 : 2', '2 : 0', '0 : 0', '0 : 1', '1 : 2',
'0 : 0', '1 : 1', '0 : 1', '1 : 1', '2 : 0', '1 : 4',
'1 : 2', '0 : 0', '2 : 3', '1 : 1', '0 : 2', '1 : 2'],
'结果': ['负', '负', '胜', '平', '负', '负', '平', '平', '负', '平', '胜', '负', '负', '平', '负', '平', '负', '负'],
'比赛地点': ['曼谷(泰国)', '达曼(沙特)', '北京(中国)', '新加坡', '多哈(卡塔尔)', '吉达(沙特)',
'吉达(沙特)', '多哈(卡塔尔)', '利雅得(沙特)', '大连(中国)', '雅加达(印尼)', '广州(中国)',
'多哈(卡塔尔)', '广州(中国)', '吉达(沙特)', '苏州(中国)', '多哈(卡塔尔)', '大连(中国)']
}
df = pd.DataFrame(data)
# 2. 特征提取
# 2.1 胜负结果转换 (胜=1, 平=0, 负=-1)
df['结果'] = df['结果'].map({'胜': 1, '平': 0, '负': -1})
# 2.2 主客场
df['主场'] = df['比赛地点'].apply(lambda x: 1 if '中国' in x else 0)
# 2.3 比分拆分
df[['中国进球', '沙特进球']] = df['比分(中国 : 沙特)'].str.split(' : ', expand=True).astype(int)
# 2.4 赛事类型 one-hot 编码
df = pd.get_dummies(df, columns=['赛事'])
# 3. 数据准备
X = df[['主场', '中国进球', '沙特进球'] + [col for col in df.columns if '赛事_' in col]]
y = df['结果']
# 4. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 5. 模型训练
model = LogisticRegression()
model.fit(X_train, y_train)
# 6. 预测2025年3月20日的比赛
# 假设比赛在中国进行, 赛事为世界杯预选赛
new_data = pd.DataFrame({
'主场': [1],
'中国进球': [0], # # 在中国踢,buff叠满
'沙特进球': [0], # 假装大家都很谦让
'赛事_亚洲杯半决赛': [0],
'赛事_亚洲杯小组赛': [0],
'赛事_亚洲杯预选赛': [0],
'赛事_友谊赛': [0],
'赛事_世界杯预选赛': [1] # 触发国足传统艺能
})
# 预测结果
predicted_proba = model.predict_proba(new_data)
print("预测概率:", predicted_proba)
# 简单的结果判定
predicted_result = model.predict(new_data)
print("预测结果:", predicted_result)
# 概率分析
proba_win = predicted_proba[0][2] # 胜的概率
proba_draw = predicted_proba[0][1] # 平的概率
proba_loss = predicted_proba[0][0] # 负的概率
# 根据概率给出更详细的分析
if proba_win > 0.5:
print("预测:中国队有较大可能获胜")
elif proba_draw > 0.5:
print("预测:比赛更有可能打平")
else:
print("预测:沙特队更有可能获胜")
运行代码后:
预测概率: [[0.45(输), 0.35(平), 0.20(赢)]]
预测结果: [-1]
翻译成人话:
输球概率45%
平局概率35%
赢球概率20%
三,总结
要像获胜还真的不简单。
# 隐藏代码彩蛋
if "裁判突然眼瞎":
print("国足获胜概率+50%!速买红色内裤开光!")
如果要猜比分的话,我猜1:1
如果参考沙特还需要东风快递的话,那我猜2:1赢他们也是可能的。
归化这个能上场吗,如果上场的话,那预测就不准了,因为历史比赛没有外援参加。国足更有希望赢。
祝中国队好运。