2022世界杯冠军是谁?本文将为你揭晓一个利用简单AI模型得到的靠谱预测。

许多人称足球为“不可预测的比赛”,因为一场足球比赛有不同的因素可以改变最终比分。

这是真的……在某种程度上。
北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典

很难预测最终比分或比赛的获胜者,但在预测比赛的获胜者时却并非如此。在过去的5年里,拜仁慕尼黑赢得了所有的德甲冠军,而曼城则赢得了4次英超联赛冠军。

巧合?我不这么认为。

我们将如何预测比赛?

有不同的预测方法。我可以构建一个复杂的机器学习模型并为其提供多个变量,但在阅读了一些论文后,我决定给泊松分布一个机会。

为什么?好吧,让我们看一下泊松分布的定义。

泊松分布是一种离散概率分布,描述了在固定时间间隔或机会区域内发生的事件数量。

如果我们将进球看作是一场足球比赛 90 分钟内可能发生的事件,那么我们可以计算 A 队和 B 队在一场比赛中进球数的概率。

但这还不够。我们仍然需要满足泊松分布的假设。

  1. 可以计算事件的数量(一场比赛可以有 1、2、3 或更多的目标)
  2. 事件的发生是独立的(一个进球的发生应该不会影响另一个进球的概率)
  3. 事件发生的速率是恒定的(在某个时间间隔内进球的概率对于其他相同长度的时间间隔应该完全相同)
  4. 两个事件不能同时发生(两个目标不能同时发生)

毫无疑问,假设 1 和 4 得到满足,但假设 2 和 3 部分成立。也就是说,让我们假设假设 2 和 3 始终为真。

过去我曾准确预测欧洲顶级联赛的获胜者,当时我绘制了前 4 大联赛过去 5 年每场比赛进球数的直方图。

如果你看一下任何联赛的拟合曲线,它看起来就像泊松分布。

现在我们可以说,可以使用泊松分布来计算一场比赛中进球数的概率。

下面是泊松分布的公式。

为了做出我考虑的预测:

  • lambda : 90 分钟内进球的中位数(A 队和 B 队)
  • x : A 队和 B 队在一场比赛中可以进球的数量

要计算 lambda,我们需要每个国家队的平均进球数/失球数。这将我们带到下一点。

每个国家队的进球数/失球数
北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典

在收集了 1930 年到 2018 年所有世界杯比赛的数据后,我可以计算出每个国家队的平均进球数和失球数。

在我对欧洲前 4 联赛的预测中,我考虑了主客场因素,但由于在世界杯上几乎所有球队都在中立场地比赛,因此我在分析时没有考虑这个因素。

一旦我获得了每支国家队的进球数/失球数,我就创建了一个函数来预测每支球队在小组赛阶段将获得的积分数。

预测小组赛阶段
下面是我用来预测每个国家队在小组赛阶段将获得多少分的代码。它看起来很吓人,但它只有我提到的很多东西,直到这一点被翻译成代码。


def predict_points(home, away):if home in df_team_strength.index and away in df_team_strength.index:lamb_home = df_team_strength.at[home,'GoalsScored'] * df_team_strength.at[away,'GoalsConceded']lamb_away = df_team_strength.at[away,'GoalsScored'] * df_team_strength.at[home,'GoalsConceded']prob_home, prob_away, prob_draw = 0, 0, 0for x in range(0,11): #number of goals home teamfor y in range(0, 11): #number of goals away teamp = poisson.pmf(x, lamb_home) * poisson.pmf(y, lamb_away)if x == y:prob_draw += pelif x > y:prob_home += pelse:prob_away += ppoints_home = 3 * prob_home + prob_drawpoints_away = 3 * prob_away + prob_drawreturn (points_home, points_away)else:return (0, 0)

上面代码解释一下就是,我们用predict_points计算主队和客队将获得多少分。为此,我使用公式 计算了每个团队的 lambda average_goals_scored * average_goals_conceded。

然后我模拟了一场比赛的所有可能比分,从 0-0 到 10-10(最后一个比分只是我目标范围的限制)。一旦我有了 lambda 和 x,我就使用泊松分布的公式来计算p。

如果比赛分别以 1–0(主场获胜)、1–1(平局)或 0–1(客场获胜)结束,则prob_home、prob_draw和prob_away将累积其值。p最后,使用以下公式计算分数。

points_home = 3 * prob_home + prob_draw
points_away = 3 * prob_away + prob_draw

如果我们predict_points用来预测英格兰对美国的比赛,我们会得到这个。

>>> predict_points('England', 'United States')
(2.2356147635326007, 0.5922397535606193)

这意味着英格兰将获得 2.23 分,而美国将获得 0.59 分。

如果我们将此predict_points函数应用于小组赛阶段的所有比赛,我们将获得每个小组的第 1 和第 2 名,从而在淘汰赛中获得以下比赛对抗阵容。
北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典

预测淘汰赛

对于淘汰赛,我不需要预测积分,而是预测每组的胜者。这就是为什么我在get_winner以前的功能的基础上创建了一个新predict_points功能。

def get_winner(df_fixture_updated):for index, row in df_fixture_updated.iterrows():home, away = row['home'], row['away']points_home, points_away = predict_points(home, away)if points_home > points_away:winner = homeelse:winner = awaydf_fixture_updated.loc[index, 'winner'] = winnerreturn df_fixture_updated

简单来说,如果points_home大于points_away则为主队,否则为客队。

多亏了这个get_winner函数,我可以得到前面小组赛的结果。

预测四分之一决赛、半决赛和决赛

如果我get_winner再次使用我可以预测世界杯的获胜者。这是最终结果!

通过再次运行该函数,我知道赢家是….
巴西!

全栈程序员推荐,AI好书

北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典

链接文中github link
github link

2022世界杯结果预测,简单AI模型最有效?附代码!相关推荐

  1. 炸金花游戏(3)--基于EV(期望收益)的简单AI模型

    前言: 炸金花这款游戏, 从技术的角度来说, 比德州差了很多. 所以他的AI模型也相对简单一些. 本文从EV(期望收益)的角度, 来尝试构建一个简单的炸金花AI. 相关文章: 德州扑克AI--Prog ...

  2. 最后一期:如何更新LSTM模型?(附代码)| 博士带你学LSTM

    最后一期:如何更新LSTM模型?(附代码)| 博士带你学LSTM LSTM是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件.在自然语言处理.语言识别等一系列的应用上都取得 ...

  3. 2020华为杯E题——基于灰色预测的大雾能见度预测模型(附代码)

    2020华为杯E题--基于灰色预测的大雾能见度预测模型(附代码) 一.E题赛题 二.赛题分析 三.基于灰色预测的大雾能见度预测模型 3.1灰色预测模型的定义 3.2 灰色预测模型的目的 GM(1,1) ...

  4. 2022世界杯神预测有哪个最神!最后一个富而喜悦到底是谁?

    谁可以举起大力神杯?是每届世界杯最热议的话题,无论是球迷还是媒体.乃至足坛名宿等都会给出自己的心中答案,但绝大多数都会是自己所喜爱的球队.近期被誉为"世界杯神预测"的富而喜悦接受媒 ...

  5. 信息抽取实战:命名实体识别NER【ALBERT+Bi-LSTM模型 vs. ALBERT+Bi-LSTM+CRF模型】(附代码)

    实战:命名实体识别NER 目录 实战:命名实体识别NER 一.命名实体识别(NER) 二.BERT的应用 NLP基本任务 查找相似词语 提取文本中的实体 问答中的实体对齐 三.ALBERT ALBER ...

  6. 【双足机器人(2)】倒立摆运动学模型构建(附代码)

    1. 简介 在上一期的文章中,我们对线性倒立摆在2D平面内的运动过程进行了分析,并给出了基于轨道能量的线性倒立摆控制过程. [双足机器人(1)]线性倒立摆及其运动控制(附代码) 在本期文章中,我们将建 ...

  7. C语言实现简单的图片加密(附代码)

    简要说明:在日常生活中我们可能会有一些"学习资料"以备不时之需查看学习,可是有时我们使用设备时一不小心点到了又会给我们带来"学习"的压力或者焦虑,那么只有我们在 ...

  8. 2022世界杯冠军预测,机器学习为你揭晓

    卡塔尔世界杯,究竟谁能捧起大力神杯,就让我们用机器学习预测一下吧! 数据源 为了构建机器学习模型,我们需要来自团队的数据.首先需要一些能够说明球队表现的信息,这些信息可以从之前的比赛中提取出来.此外, ...

  9. 【文末送书】2022世界杯冠军预测,机器学习为你揭晓

    卡塔尔世界杯,究竟谁能捧起大力神杯,就让我们用机器学习预测一下吧! 数据源 为了构建机器学习模型,我们需要来自团队的数据.首先需要一些能够说明球队表现的信息,这些信息可以从之前的比赛中提取出来.此外, ...

最新文章

  1. C# Sato CL4NX打印机发送SBPL指令打印表面信息、RFID芯片数据写入
  2. JSP动作--JSP有三种凝视方式
  3. 2019.01.23【NOIP普及组】模拟赛C组总结
  4. appium()-The event firing
  5. Oracle为JDK 8寻求社区参与
  6. Android setBackgroundResource和setBackgroundDrawable和用法
  7. Redis管道(Pipeline)详解
  8. java 多态 显式隐式,Java 构造器中的显式参数和this隐式参数
  9. pytorch 实现Gradient Flipping 各种坑
  10. android selector 的item/不能是空节点
  11. Sql三张表的连接查询
  12. HDUOJ---汉洛塔IX
  13. ibm tivoli_在Tivoli Access Manager环境中管理TDS 6.0代理服务器并进行故障排除
  14. 无意看到的一篇文章,有我的影子
  15. Gruobi多目标规划
  16. 计算机一级云居寺,刁常宇-Zhejiang University Personal homepage
  17. 【兄弟反目成仇系列】:我只是写了一个爆炸信息窗口脚本,好兄弟追了我几条街~
  18. 美学心得(第二百四十三集) 罗国正
  19. 线上教学困难多?来试试轻量级互动课堂方案
  20. 长期主义:做你余生中最重要的事

热门文章

  1. C语言中的赋值表达式
  2. Kafka安装与配置
  3. 山东多地:电子签名、电子签章助力政务提效
  4. 快,喊上你的闺蜜一起贴星黛紫改色膜
  5. 手写文件如何提取文字?
  6. 西京学院计算机考研资料汇总
  7. mac 安装自己的web 开发软件
  8. matlab查看频频,matlab中如何能统计点出现的频次呢?
  9. SkeyeVSS综合安防Onvif、RTSP、GB28181视频云无插件直播点播解决方案之服务器资源管理
  10. 车道线检测|利用边缘检测的原理对车道线图片进行识别