未加星标

AI 预测世界杯冠军是「巴西队」人工智能

字体大小 | |
[商业智能 所属分类 商业智能 | 发布者 店小二04 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

AI 预测世界杯冠军是「巴西队」人工智能
工具
AI 预测世界杯冠军是「巴西队」人工智能
算法
AI 预测世界杯冠军是「巴西队」人工智能
模型
AI 预测世界杯冠军是「巴西队」人工智能
测试
AI 预测世界杯冠军是「巴西队」人工智能
机器学习

2018年世界杯足球赛开赛在即,全世界的球迷都想知道:谁将夺得令人垂涎的冠军杯?



AI 预测世界杯冠军是「巴西队」人工智能

如果你不仅是个球迷,还是个技术达人,我猜你已意识到机器学习和AI也是目前的流行语。我们不妨结合两者来预测谁赢得世界杯。


免责声明:本文不该用于投注或任何财务决策。你要是选择这么做,我也不会拦你(如果你中了头彩,可别忘了我)。


足球比赛涉及好多因素;正因为如此,所有这些因素无法在一个机器学习模型中加以分析。我只是想用数据搞一个有趣的项目……


目标

目标是使用机器学习来预测哪支球队将赢得2018年世界杯。

预测今年这届世界杯每一场比赛的结果。

模拟下一轮比赛,比如四分之一决赛、半决赛和决赛。


这些目标带来了一个独特而实际的机器学习预测问题,需要解决各项机器学习任务:数据整合、特征建模和结果预测。


数据

我使用了Kaggle的两个数据集,可以在这里(https://www.kaggle.com/martj42/international-football-results-from-1872-to-2017/data)找到。我们将使用自1930年世界杯开始以来所有参赛球队的历史比赛结果。


局限性:国际足联排名是上世纪90年代搞起来的,因此缺少数据集的大部分内容。于是我们坚持使用历史比赛记录。


环境和工具:jupyter笔记本、numpy、pandas、 seaborn、matplotlib和scikit-learn。

我们先要对两个数据集进行一些探索性分析,做一些特征工程以选择对预测最要紧的特征,做一些数据处理,选择一个机器学习模型,最后将模型部署到数据集上。


开始动手吧!


要紧的事先说,导入必要的代码库,并将数据集加载到一个数据框。



AI 预测世界杯冠军是「巴西队」人工智能

导入代码库


AI 预测世界杯冠军是「巴西队」人工智能

加载数据集……


为两个数据集调用world_cup.head()和results.head(),确保数据集已加载到数据框中,如下所示:



AI 预测世界杯冠军是「巴西队」人工智能

探索性分析

分析这两个数据集后,得到的数据集包含过去比赛的数据。因而得到的新的数据集对分析和预测将来的比赛很有用。


探索性分析和特征工程:这需要确定哪些特征对机器学习模型来说很要紧,这是任何数据科学项目中最耗时的部分。


现在让我们将目标差异和结果这一列添加到结果数据集。



AI 预测世界杯冠军是「巴西队」人工智能

查看新的结果数据框。



AI 预测世界杯冠军是「巴西队」人工智能

然后我们将处理数据子集,这部分包括只有尼日利亚参加的比赛。这将帮助我们专注于哪些特性对一个国家来说很要紧,然后扩大到参加世界杯的那些国家。



AI 预测世界杯冠军是「巴西队」人工智能

第一届世界杯在1930年举办。为年份创建一个列,并选择1930年以后的所有比赛。



AI 预测世界杯冠军是「巴西队」人工智能

现在我们可以直观显示历年来尼日利亚最常见的比赛结果。



AI 预测世界杯冠军是「巴西队」人工智能

获得每个参赛国家的胜率是一个有用的指标,我们可以用它来预测每场比赛的最有可能的结果。


比赛场地关系不大。


范围缩小到参加世界杯的球队


为所有参与球队创建一个数据框。



AI 预测世界杯冠军是「巴西队」人工智能

然后,我们会进一步过滤结果数据框,只显示1930年起出现在今年世界杯上的球队,并摈弃重复的球队。



AI 预测世界杯冠军是「巴西队」人工智能

创建年份列,摈弃1930年之前的比赛,并摈弃不会影响比赛结果的列,比如date、home_score、away_score、tournament、city、country、goal_difference和match_year。



AI 预测世界杯冠军是「巴西队」人工智能

修改“Y”(预测标签),以便简化我们模型的处理。


如果主队获胜,winner_team列将显示“2”,如果是平局,显示“1”,如果客队赢,则显示“0”。


AI 预测世界杯冠军是「巴西队」人工智能


AI 预测世界杯冠军是「巴西队」人工智能

通过设置伪变量,将home_team和_team从分类变量转换成连续输入。


使用pandas以及get_dummies()函数。它将分类列转换成独热(one-hot,数字“1”和“0”)表示,让它们能够加载到Scikit学习模型中。


然后,我们将X级和Y组分开,将数据分成70%是训练数据,30%是测试数据。



AI 预测世界杯冠军是「巴西队」人工智能

我们将使用逻辑回归,这是一种分类器算法。这个算法如何工作?它通过使用逻辑函数来估计概率,从而度量分类因变量和一个或多个自变量之间的关系。具体来说是累计逻辑分布。


换句话说,在给出可能影响结果的一组数据点的情况下,逻辑回归试图预测结果(赢或输)。


实际上其工作方式是,你每次为算法馈送一次比赛,同时馈送上述的“数据集”和比赛的实际结果。然后,模型学习你馈送的每一个数据如何积极或消极地影响比赛结果,影响多大。


馈送足够多的好数据,你就有了可以用来预测未来结果的模型。


模型的好坏取决于馈送给它的数据。


不妨看一下最后的数据框:



AI 预测世界杯冠军是「巴西队」人工智能

看起来很棒。现在我们准备将这个传递给我们的算法:



AI 预测世界杯冠军是「巴西队」人工智能

我们的模型在训练集上的准确率为57%,在测试集上的准确率为55%。这看起来不太好,但暂且不用管它。


这时候,我们将创建一个数据框,我们将部署模型。


我们先开始加载截至2018年4月的国际足联排名数据集(https://us.soccerway.com/teams/rankings/fifa/?ICID=TN_03_05_01)和含有从这里(https://fixturedownload.com/results/fifa-world-cup-2018)获得的小组赛阶段保留球队的数据集。排名较高的球队将被视为比赛的“热门”,因此它们放在“home_teams”这一列,这是由于世界杯比赛中没有“主队”或“客队”。然后,我们根据每支球队的排名位置将球队添加到新的预测数据集。下一步将创建伪变量,并部署机器学习模型。


预测比赛

现在你想知道我们怎么来预测?码了那么多代码,说了那么多,你啥时预测比赛?好了,马上预测比赛了。


将模型部署到数据集

我们先将模型部署到小组赛。



AI 预测世界杯冠军是「巴西队」人工智能

这是小组赛的结果。


AI 预测世界杯冠军是「巴西队」人工智能

AI 预测世界杯冠军是「巴西队」人工智能

AI 预测世界杯冠军是「巴西队」人工智能

AI 预测世界杯冠军是「巴西队」人工智能

AI 预测世界杯冠军是「巴西队」人工智能

AI 预测世界杯冠军是「巴西队」人工智能

AI 预测世界杯冠军是「巴西队」人工智能

模型预测三场平局,它还在葡萄牙和西班牙之间稳妥下注,但认为西班牙胜率高。我用该网站(https://ultra.zone/2018-FIFA-World-Cup-Group-Stage)来模拟小组赛的比赛。


下面是模拟16轮淘汰赛。


AI 预测世界杯冠军是「巴西队」人工智能

AI 预测世界杯冠军是「巴西队」人工智能

模型预测四分之一决赛在这些球队之间进行:葡萄牙对阵法国、巴西对阵英格兰、西班牙对阵阿根廷和德国对阵比利时。


预测如下:


AI 预测世界杯冠军是「巴西队」人工智能


半决赛

葡萄牙对阵巴西和德国对阵阿根廷


预测:



AI 预测世界杯冠军是「巴西队」人工智能

最后是总决赛

巴西对阵德国


预测:



AI 预测世界杯冠军是「巴西队」人工智能

根据这个模型,巴西很可能赢得这届世界杯。


进一步研究/改进的方面


数据集:为了改进数据集,你可以使用FIFA(比赛而不是组织)来评估每一个球队成员的水准。

混淆矩阵(confusion matrix)适用于分析模型预测哪些比赛出错。

我们可以尝试结合更多模型以提高准确性。


结论

为了改进这项工作,有许多事情可以做。现在不妨看看我们是否预测很准。全面披露:我不是十足的球迷。所以预测准不准风险自负。


完整的代码可以在这里(https://github.com/itsmuriuki/FIFA-2018-World-cup-predictions)找到。


AI 预测世界杯冠军是「巴西队」人工智能

欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:418451831

tags: 数据,比赛,模型,世界杯,球队,https,对阵,学习,机器,馈送
分页:12
转载请注明
本文标题:AI 预测世界杯冠军是「巴西队」人工智能
本站链接:http://www.codesec.net/view/577272.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 商业智能 | 评论(0) | 阅读(72)