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