机器学习预测哪个国家会赢得FIFA世界杯?
【发布时间】:2024-03-22 09:09:33
如果您不仅是一名足球迷,也是一名技术人员,我想您应该知道机器学习和人工智能也是目前的流行词。 让我们结合这两者来预测哪个国家将赢得世界杯冠军。
免责声明:不应将其用于投注或任何财务决策。 如果你选择的话,我是谁来阻止你(如果你遇到麻烦,请不要忘记我)。
一场足球比赛涉及很多因素,因此无法在机器学习模型中探索所有因素。 这只是一个黑客试图使用一些很酷的数据......
目标
目标是利用机器学习来预测谁将赢得 2018 年 FIFA 世界杯,从而预测整个比赛中各个比赛的结果。 模拟接下来的比赛,例如四分之一决赛、半决赛和决赛。
这些目标提出了一个独特的现实世界机器学习预测问题,涉及解决各种机器学习任务:数据集成、特征建模和结果预测。
数据
我使用的两个数据集。 您可以在这里找到它们。 我们将使用自 1930 年锦标赛开始以来所有参赛球队的历史成绩。
局限性:FIFA 排名创建于 20 世纪 90 年代,因此缺乏大部分数据集。 所以让我们坚持历史比赛记录。
环境和工具:、numpy、 和 -learn。
我们将首先对两个数据集进行一些探索性分析,进行一些特征工程以选择最相关的特征进行预测,进行一些数据处理,选择机器学习模型,最后将其部署在数据集上。
理论联系实际
首先,导入必要的库并将数据集加载到数据框中。
导入库
正在加载数据集...
通过调用两个数据集的 .head() 和 .head() 确保数据集已加载到数据框中,如下所示:
探索性分析
分析两个数据集后,生成的数据集包含过去比赛的数据。 新的(生成的)数据集对于分析和预测未来的比赛很有用。
探索性分析和特征工程:确定哪些特征与机器学习模型相关是任何数据科学项目中最耗时的部分。
现在,我们将目标差异和结果列添加到结果数据集中。
查看新的结果数据框。
然后我们将处理一部分数据。 其中包括只有尼日利亚参加的锦标赛。 这将有助于我们关注哪些国家具有有趣的特征,并随后扩展到参加世界杯的国家。
第一届世界杯于 1930 年举行。创建年份列并选择 1930 年以来的所有比赛。
我们现在可以想象多年来尼日利亚最常见的结果。
获得参加世界杯的每个国家的获胜率是一个有用的指标,我们可以用它来预测锦标赛中每场比赛最有可能的结果。
比赛场地并不重要。
缩小范围至参加世界杯的球队
为所有参与团队创建一个数据框。
然后,我们进一步过滤生成的数据框,以显示 1930 年以来仅参加今年世界杯的球队,并删除重复数据。
创建名为年份的列,过滤掉1930年之前的比赛以及不影响比赛结果的因素(例如日期、主场比分、客场比分、联赛、城市、国家、净胜球、比赛年份)。
修改“Y”(预测标签)以简化模型的处理。
如果主队获胜,该列将显示“2”;如果平局,该列将显示“1”;如果客队获胜,该列将显示“0”。
通过设置虚拟变量,将 从分类变量转换为连续输入。
使用 () 函数。 它将分类列替换为唯一的(数字“1”和“0”)表示,以便它们可以加载到学习模型中。
然后,我们将 X 组和 Y 组分开,并将数据分为 70% 的训练和 30% 的测试。
我们将使用逻辑回归,一种分类器算法。 这个算法是如何工作的? 它通过使用逻辑函数估计概率来衡量分类因变量与一个或多个自变量之间的关系。 具体来说就是累积物流配送。
换句话说,逻辑回归尝试根据一组可能影响结果的数据点(统计数据)来预测结果(获胜或失败)。
在实践中,它的工作原理是,您一次向算法提供一组匹配,同时提供上述“数据集”和匹配的实际结果。 然后,模型了解每种形式的数据如何积极、消极以及在多大程度上影响游戏的结果。
给它足够的(好的)数据,你就有了一个可以用来预测未来结果的模型。
模型的好坏取决于您为其提供的数据。
让我们看一下最终的数据框:
看起来很棒。 我们现在准备将其传递给我们的算法:
我们的模型在训练集上的准确率达到了 57%,在测试集上的准确率达到了 55%。 这看起来不太好,但我们继续吧。
此时,我们将创建一个数据框,在其上部署我们的模型。
我们将首先加载截至 2018 年 4 月的 FIFA 排名数据集以及此处获得的包含比赛小组赛阶段的数据集。 国际足联排名较高的球队将被视为比赛的“热门球队”,因此由于世界杯比赛没有“主队”或“客场”球队,因此它们将被定位在“”栏下。 然后,我们根据每个团队的排名位置将团队添加到新的预测数据集。 下一步是创建虚拟变量并部署机器学习模型。
比赛预测
现在你想知道我们是否会得到预测吗? 这里有这么多的代码和讨论,你什么时候向我们展示预测? 再坚持一会儿,我们就快完成了......
将模型部署到数据集
我们首先将模型部署到小组竞赛中。
这是小组赛的结果。