2018年风靡全球的世界杯即将拉开序幕,全世界球迷都想知道谁将问鼎冠军。
如果你不仅是个球迷,还是个技术宅,我打赌你一定听说过机器学习和AI这些时髦词汇,让我们把足球和它们融合,来大胆预测谁是本届世界杯的夺冠热门球队并问鼎世界杯。
免责声明:该预测不可用于任何赌博投机,如果你仍然要做,我不拦着你。(赢了别忘了告诉我^_^)
数据
我们使用从kaggle上获取的数据,包含了1930年以来的历史比赛记录。
使用环境和工具:jupyter notebook,numpy,pandas,seaborn,matplotlib,scikit-learn
让我们开始吧!
首先,引入必要的python库,并且把数据读入数据结构。
引入库
读入数据
数据看起来是这个样子的
试探性分析
尝试发现数据中的那些数值段在机器学习的建模中,会对结果产生影响。
现在给数据添加输赢和比分差
看看操作结果
然后我们做一个数据子集,仅包含尼日利亚的比赛,先注目在一个球队上发现特征,然后推广到所有参赛球队。
第一次世界杯举办于1930年,所以提取1930年以后的比赛数据。
现在我们可以从视觉上观察尼日利亚这些年的比赛形势
获取每个国家队的胜率形成一个尺度,可以最终进行我们的预测。
当然,比赛发生在哪个场馆,并没有对结构有重大影响。
缩小数据集,仅保留参赛队
然后过滤结果数据集,只保留1930年以后世界杯参赛队伍,去重。
建一个year的list,保存1930年以后的比赛数据:比分、城市、国家、分差、时间
改变“Y”来简化模型的处理过程,胜利队伍如果是主队,就为“2”,如果平,就为“1”,如果是客队,就为“0”
使用pandas的get_dummies函数,来把数据内的分类替换为0或1,使数据能被scikit-learn读入到它的数据模型
然后把数据分开x和y集合,并且切分为70%的训练集和30%的测试集。
我们使用逻辑回归—一种分类算法,神马是逻辑回归,自行百度
我们的模型获得了57%的准确率在训练集上,55%在测试集上,这看来表现不太好,但是我们继续。
这里我们获取2018的fifa排名数据,在此数据上应用我们的训练模型。
比赛预测
好紧张…
应用模型到数据集
这里是小组赛结果
16强淘汰赛如下:
在往年的数据基础上根据模型数据集分析:西班牙VS俄罗斯,西班牙胜;阿根廷VS秘鲁,阿根廷胜;德国VS瑞士,德国胜;比利时VS波兰,比利时胜;葡萄牙和乌拉圭,葡萄牙胜;法国VS克罗地亚,法国胜;巴西VS墨西哥,巴西胜;英国VS哥伦比亚,英国胜。
不管你信不信,反正我是信了
模型可以继续改进
接下来你也可以预测四分之一决赛是否在葡萄牙、西班牙、德国及阿根廷之间开展,谁又将成为夺冠主力呢?
特别说明:以上数据分析,纯属个人学习用,预测结果与实际情况可能偏差很大,不能用于其他用途。
翻译:杨某人
原文地址:https://blog.goodaudience.com/predicting-fifa-world-cup-2018-using-machine-learning-dc07ad8dd576
了解更多网络安全技能与喜闻乐见的“福利帖”,欢迎关注微信公众号“开源聚合网络空间安全研究院”,与你一起晋升技术达人。
来源:freebuf.com 2018-06-13 16:43:49 by: 开源聚合网安教育
请登录后发表评论
注册