基于关联规则的足球比赛数据分析

news/2025/2/12 17:30:42/

1、明确分析的目的和思路

目的:目前,足球比赛作为大众娱乐项目的一种,越来越受到大家的喜爱,其中不乏一些球队死忠、球星铁粉以及“赌球狗”,而希望自己支持的球队获胜也是足球比赛中的一大关注点。针对这种情况,本文通过足球比赛中产生的数据,比如射门次数、控球率、传球成功率等,运用关联规则算法进行建模、分析,探索足球比赛的胜负与哪些关键指标的关系密切。

思路:以本赛季的中超联赛(目前进行到第18轮)为分析对象,爬取体育网站上的各场比赛数据和胜负结果,经过数据处理后,采用Apriori算法,挖掘各数据指标与比赛结果之间的关系。

2、数据收集

对tzuqiu网站(http://www.tzuqiu.cc/)上的每场中超比赛的数据进行爬取,包括:1、射门次数,2、控球率,3、传球成功率,4、过人次数,5、抢断次数,6、角球次数,7、失误次数,以及比赛结果(胜、平、负)。如图1所示:

图1 指标爬取示意图

最终结果共288条记录(18轮*每轮8场比赛*每场2支球队),结果如图2所示:

图2 爬取结果

3、数据处理

使用Rstudio工具进行处理。

(1)数据清洗

首先导入数据,然后处理缺失值。

考虑到含有缺失值的记录较少(只有2条,第13轮上海上港与广州恒大的比赛因为天气原因延期进行),决定把源数据中含有缺失值的记录删除。

data = read.csv(file="csl_data.csv",header = TRUE) #导入数据head(data) #列出前6条记录ncol(data) #列数nrow(data) #行数data = data[complete.cases(data),] #去除含有缺失值的记录nrow(data) 

输出结果如图3:

图3 数据清洗输出结果

(2)数据规约

经过处理,数据集中有10个变量、286条记录。

为了有效地进行建模分析,将其中与建模任务不相关的属性剔除。因此,选取“射门次数”、“控球率%”、“传球成功率%”、“过人次数”、“抢断次数”、“角球次数”、“失误次数”和“比赛结果”列构成的数据集,其中“比赛结果”列中,3表示胜,1表示平,0表示负。

data = data[,c(3:9,10)] #取出指标列和结果列head(data)

输出结果如图4:

图4 数据规约输出结果

(3)数据离散化

由于Apriori算法无法处理连续型数值变量,为了将原始数据格式转换成适合建模的格式,需要对数据进行离散化。

采用聚类算法对各个数据指标进行离散化处理,将每个属性分成五类。

type = 5 #数据离散化的分组个数index = 8 #比赛结果列typelabel = c("A","B","C","D","E","F","G") #离散化后的标识前缀cols = ncol(data[,1:7]) #数据指标列的个数rows = nrow(data[,1:7]) #数据集的行数disdata = matrix(NA,rows,cols+1) #初始化for (i in 1:cols){cl = kmeans(data[,i],type,nstart = 20)disdata[,i] = paste(typelabel[i],cl$cluster,sep="")} #建立循环,对每个数据指标列进行聚类disdata[,cols+1] = paste("H",data[,index],sep = "") #对结果列进行离散化disdata = data.frame(disdata) #转换为数据框格式colnames(disdata) = c("射门次数","控球率%","传球成功率%","过人次数","抢断次数","角球次数","失误次数","比赛结果") #修改列名head(disdata)

输出结果如图5:

图5 数据离散化输出结果

各个属性离散化后的结果如表1所示。

表1 数据指标列离散表
标识聚类中心标识聚类中心标识聚类中心标识聚类中心标识聚类中心标识聚类中心标识聚类中心
A124.7B157.65C166.63D112.13E111.48F11.64G119.27
A218.55B267.14C257.97D28.92E220.74F210.16G214.06
A36.78B342.35C384.38D35.89E329.17F37.33G34.81
A414.26B450C478.94D417.21E47.33F45.43G48
A510.43B532.86C573.13D53.26E516.14F53.54G510.97

4、数据建模

采用Apriori关联规则算法,挖掘数据指标与比赛结果之间的关联关系。建模的流程如图6所示。

图6 建模流程

 

library(arules)trans = as(disdata,"transactions") #将数据转换为transactions格式rules = apriori(trans,parameter = list(support=0.03,confidence=0.75)) #调用Apriori算法生成关联规则rulesinspect(rules)

输出结果如图7所示

图7 关联规则模型结果

5、结果分析

由于探究数据指标与比赛结果之间的关系,我们只关注关联规则集中的第六条和第八条规则。

(1)B4、C4、D1 => H3,支持度达到3.5%,置信度达到76.92%。

说明当控球率达到50%、传球成功率达到79%和过人次数达到12次左右时,赢得比赛的可能性为76.92%,这种情况在统计的数据中发生的可能性为3.5%。

(2)A4、C4、G4 => H0,支持度达到3.5%,置信度达到83.33%。

说明当射门次数14次左右、传球成功率79%和失误次数8次左右时,输掉比赛的可能性为83.33%,这种情况在统计的数据中发生的可能性为3.5%。

综上所述,在中超赛场上,若要赢得比赛胜利,需要保持均衡的控球率,提高传球成功率以及多尝试过人;同时为了避免输球,注意控制失误次数以及提高射门次数。


http://www.ppmy.cn/news/558731.html

相关文章

欧赔球队广实的定位探讨

球队的广实定位,懂的人自然知道,是开盘的前提。是研究欧赔入门的也是最难的一个门槛。它难在哪里,个人总结如下: 对球队无法获取更多的了解,知道的都是表面的,比如身价,积分,主客场…

笔记本右侧键盘数字打不出来

查看NumLk键是否做了切换 ctrlNumLk 或 FnNumLk

计算机专业笔记本需要小键盘吗,笔记本电脑小键盘数字0不能用

是因为把小键盘开启了。当同时按下Fnnumberlock的时候就会把小键盘开启了然后JKLUIO就变成123456了所以要关上的话再按Fnnumberlock。 小键盘,用于快速输入数字等,通过NUMLOCK键,可以在光标功能和数字功能之间进行切换。另外,现在…

电脑知识:如何将旧的Windows笔记本电脑切换到Linux

桌面Linux可以在Windows 7(和更早版本)的笔记本电脑和台式机上运行。 在Windows 10的负载下会弯曲和折断的机器将像魅力一样运转。 今天的桌面Linux发行版与Windows或macOS一样易于使用。 而且,如果您担心能够运行Windows应用程序&#xff…

笔记本开机数字小键盘自动打开问题

有时,笔记本用ghost还原系统时,ghost一般使用的是台式机的镜像,所以默认的数字键盘是自动打开的,即Num lock。如果用户登录时,密码里包括数字键盘的字母时,就会出现无法如何输入都是错的。 为登录系统成功…

笔记本上的小键盘计算机怎样用,笔记本数字小键盘不能用怎么办【解决方法】...

许多笔记本键盘中都会携带一个小键盘,与台式电脑的键盘大小差不多,小键盘上面标注着阿拉伯数字0到9,非常适合会计行业的人们使用。小键盘可以帮助人们快速地将数字敲打出来,使用起来极为方便。要知道,大键盘属于输入设…

08- c语言字符串 (C语言)

一 字符串的定义及基本使用 1、什么是字符串 被双引号引用的字符集合!例如:”hello” 、”world”,或者是以 \0 结尾的字符数组!!! 比如:char ch[] {h, e, \0} 注意:”hello” 中…

浏览器演变史 详评1991年以来的浏览器

http://www.sina.com.cn 2009年08月26日 13:40 IT.COM.CN 文/Panx 【IT世界整理】Web浏览器如今可谓遍地开花。 你可以选择精悍的Chrome浏览器。 或者有人仍然坚持使用IE(不是特别的符合国际标准,但是市场份额较大,使得开发者也不可能放弃IE) 。…