根据四万场比赛结果,我给今年世界杯每场比赛计算了胜率

四年一度的世界杯本周就要开赛啦!若是你和我同样是一名伪球迷,请先了解如下注意事项:算法

  1. 本届世界杯是在俄罗斯举办
  2. 一共32只球队分8个小组,每组前2名进入淘汰赛
  3. 比赛持续一个月
  4. 共64场比赛在俄罗斯多个城市举行
  5. 没有中国队,由于没出线
  6. 没有意大利队、荷兰队,由于也没出线
  7. 是国家队间比赛,所以没有巴萨、皇马、曼联、拜仁……
  8. 比赛常规时间,上下半场各45分钟
  9. 淘汰赛阶段常规时间打平,进入30分钟加时赛,再打平才是点球大战
  10. 梅西是阿根廷的,C罗是葡萄牙的,内马尔是巴西的,他们都不是西班牙的
  11. 大罗、小罗、卡卡、贝克汉姆都不参加
  12. 世界杯是足球比赛,没有哈登、库里、杜兰特


每到世界杯,一项保留节目就是预测当年冠军,各路大神啦、名嘴啦、章鱼啦、猫猫狗狗啦都少不了。此次我也来预测一把。但我不懂球啊怎么办?不要紧,我能够用程序!(反正都是蒙呗)编程


数据来源机器学习

这份数据来自 Kaggle,是从1872年到2018年共38929场比赛的结果。咱们此次就用这份数据做为预测的基础。工具

https://www.kaggle.com/martj42/international-football-results-from-1872-to-2017/data

可从文末项目中获取。学习

另外介绍下 Kaggle,它一个数据科学竞赛平台,强烈建议研究数据分析、机器学习这方面的同窗多上去玩耍。区块链


创建模型网站

有了这么多历史比赛数据,要怎么来预测呢?我创建了以下几条规则:人工智能

  1. 过久远的数据对于当下球队的参考价值有限,因此设定一个起始年限
  2. 查找对阵双方从起始年限至今的对战数据,并计算
    胜利几率=(胜利场次+平局场次/2)/总场次
  3. 小组赛阶段,胜利几率超过必定阈值(好比0.7)的球队赢,不然为平局
  4. 淘汰赛阶段,胜利几率大的球队赢
  5. 若是两队从起始年限至今没有进行过比赛,就往前再多选取N年的数据(通常出如今参加大赛较少的球队)
  6. 若是仍然没有交手过,则以各自对阵本届杯赛其他全部球队的战绩为基础,分别计算胜利几率。几率高的球队胜。但若是是小组赛,几率差必须高过必定阈值(好比0.1),不然为平局


赛程模拟3d

基于以上的规则模型,咱们导入数据,经过 Python 程序模拟本届世界杯32支球队的64场比赛。code

这样就“预测”了比赛的结果。


预测结果

因此,究竟这份代码 run 出怎样的结果?

由于不一样的起始年限和平局阈值会获得不同的结果。我尝试使用 2006~2016 11个不一样年限,和4组N的取值,获得共44组比赛结果。最终夺冠的次数是:

巴西 23 次
西班牙 12 次
德国 6 次
英格兰 3 次

看来,巴西队仍是毋庸置疑的夺冠热门。难怪各大菠菜网站都给他们开出最低的赔率。

可是抛开巴西队不谈,在个人结果中,英格兰队的表现异常得好。这主要源于他们近几年对战巴西的良好战绩:1胜2平0负。而相比之下,阿根廷恐怕又要“没戏”了。

另外,塞内加尔伊朗值得关注下,他们这几年对战其余球队的战绩不错,或许会成为黑马:

2012年以来

塞内加尔 4胜3平1负
伊朗 5胜6平3负


历史战绩查询工具

固然,我这个模型是很粗糙的。不过原本嘛,足球是圆的,拿历史数据预测比赛结果也就是娱乐一下,给看球增长点乐趣。若是你有本身的规则想实现,也能够在我代码的基础上进行修改。代码和数据的获取方法见文末说明。

另外,我把部分数据导出,作了一个在线查询的小工具,方便你直接查询任意两支球队之间的对战历史。

点击进入:历史战绩在线查询工具


能够选择不一样的年限。同时我还自创了一套“赔率”计算,以供参考。

主队综合胜率=总场数/(主队胜场+客队负场)

由于这个赔率模型基于的更可能是历史战绩,而强队的对手可能是强队,弱队的对手可能是弱队,致使赔率上的差别并无市面上的那么大,但总的来看也基本符合胜负关系。若是你发现有某场比赛计算出的结果和别人开出的结果差别很大,那或许这会是场会爆冷的比赛哦


预测结果仅供参考,若有雷同纯属巧合


最后,我忽然想到,我们国足对这32支球队的战绩如何呢?若是在另外一个平行宇宙中有幸参赛,大概会是个什么结果?因而……

2014年以来:2胜, 5平, 8负
2002年以来:8胜, 19平, 35负
彷佛只有和从未交过手的巴拿马在战绩上能够一战。


好吧,当我没说。仍是让咱们安心享受世界杯的欢乐吧!


本文中使用到的数据和代码,可在公众号(Crossin的编程教室)里获取,回复关键字 世界杯


════
其余文章及回答:

如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 区块链 | 人工智能 | 双11 | 嘻哈 | 爬虫 | 排序算法 | 我用Python | 高考

欢迎搜索及关注:Crossin的编程教室

相关文章
相关标签/搜索