惊呆了!我用 Python 可视化分析和预测了 2022 年 FIFA 世界杯

网站建设4年前发布
32 0 0

许多人称足球为 "不可预测的游戏",因为一场足球比赛有太多不同的因素可以改变最后的比分。,从某种程度上这是真的.....因此本文仅供学习参考!!,预测一场比赛的最终比分或赢家确实是很难的,但在预测一项比赛的赢家时就不是这样了。在过去的5年中,Bayern Munich赢得了所有的德甲联赛,而Manchester City则赢得了4个首发联赛。其实这些都可以用来预测的。,经过测试,本文建立的模型能成功地预测了在20-21赛季中期的所有英超、西甲、意甲和德甲这些联赛的冠军,这也是基于当时已经有近19场比赛了。同样,我们使用该模型来预测下2022年世界杯,会不会有如此惊人的效果呢?一起拭目以待吧~,有不同的方法来进行预测。我可以建立一个花哨的机器学习模型并给它提供多个变量,但在阅读了一些论文后,我决定使用泊松分布试一试。,泊松分布 有读者会疑问,这是为什么呢?那接下来首先看一下泊松分布的定义。,有读者会疑问,这是为什么呢?那接下来首先看一下泊松分布的定义。,泊松分布是一个离散的概率分布,描述了在一个固定的时间间隔或机会区域内发生的事件的数量。,如果我们把进球看作是一场足球比赛90分钟内可能发生的事件,我们可以计算出A队和B队在一场比赛中可能进球的概率。,但这还不够。我们仍然需要满足泊松分布的假设。,毫无疑问,假设1和4是符合的,但2和3是部分正确的。也就是说,我们假设假设2和3总是正确的。,当预测欧洲顶级联赛的冠军时,我绘制了过去5年前4个联赛每场比赛的进球数柱状图。,20230306130837e32d8d462905a6e137c99298f7209acea576e0512,4个联赛的进球数柱状图,如果你看一下任何联赛的拟合曲线,它看起来像泊松分布。,现在我们可以说,可以用泊松分布来计算一场比赛中可能出现的进球数的概率。,下面是泊松分布的公式。,2023030613100936f15e860bdab9fc3eb215f9a07873b574ef0b555,为了进行预测,我考虑了。,为了计算lambda,我们需要每个国家队的平均进/丢球数。这将我们引向下一个问题。,2023030613083764c4b433558a87dd696130386eda7938339ede590,2023030613101048775a9204b92e93c145661dd466fa5e613e8c932,2023030613083836d9dca448438b403df208e9d96fbcd200d3bb740,20230306130839387dcae143a06752bff7243e7d3eb36086b175783,20230306130839546faa4650c90395026450c73b66ac8d4b0671210,20230306130840d5d1ba35518dd5be06f1472684ab68d378b69c762,20230306130841d5d1e2a531c7443f0be499e87dbe92898ce5f8641,202303061308429751d0f9943fa280647648bae662b4de73a854106,由于在世界杯中,几乎所有的球队都在中立球场比赛,所以在这次分析中没有考虑主场/客场的因素。,一旦有了每个国家队的进/丢球数,就创建了一个函数,预测每支球队在小组赛中会得到多少分。,下面是我用来预测每个国家队在小组赛阶段会得到多少分的代码。,2023030613084247564cd6768d4cb51573661511b0a111ba4d31893,通俗地说,predict_points 计算的是主队和客队会得到多少分。这里使用公式计算每支球队的lambda,即average_goals_scored * average_goals_conceded 。,然后模拟了一场比赛从0-0到10-10的所有可能的比分(最后的那个比分只是我的进球范围的极限)。一旦有了lambda和x,就可以使用泊松分布的公式来计算p。,prob_home、prob_draw和prob_away分别累积了p的值,如果说比赛以1-0(主场获胜)、1-1(平局)或0-1(客场获胜)结束。最后,用下面的公式计算积分。,如果我们用predict_points来预测英格兰对美国的比赛,我们会得到这个结果。,这意味着英格兰将得到2.23分,而美国将得到0.59分。因为这里使用的是概率,因此得到的是小数。,如果将这个predict_points函数应用于小组赛阶段的所有比赛,我们将得到每个小组的第1和第2名,从而得到以下淘汰赛的比赛。,2023030613101102c1ec628b5e3a1f61f55928bb48f6dc5c984a556,20230306130843880facc223eb8d517dc5550ee416c6d45ebab7927,202303061308450378c2b20afc79f29d3600238fd36a0b604b57725,df_fixture_knockout['winner'] = '?' df_fixture_knockout 图片 对于淘汰赛,我不需要预测分数,而是预测每个小组的获胜者。这就是为什么我在之前的 predict_points 函数基础上创建了一个新的 get_winner 函数。,简单地说,如果主队的积分大于客队的积分,那么赢家就是主队,否则,赢家就是客队。,使用get_winner函数可以得到如下的结果。,20230306130844b96667b8488934c6835033f43d75a54dda0d3d612,20230306141311620d854585e20137e077715b5baa06457a21cc285,20230306130845281bd9c80ac84ff22cf3799138b633af4b80e7859,2023030613101203d87f5711542de10ca9552fd14b0f1f9b340a322,如果我使用 get_winner,我可以预测世界杯的冠军。这是最后的结果!!,2023030613101287391a7214fd5cda0a1340d1a5247c83adc0b2690,通过再一次运行该函数,我得到的赢家是...巴西!

© 版权声明

相关文章