直播网

(数据集)2017年所有活跃的足球运动员

发布时间: 来源:直播网

让我们开始我们的示例学习路径吧~ 1.了解数据集

以下是和静社区对数据集的描述,主要包括:数据集的主要内容以及数据中每个标签的中文标注。

(一)数据内容:

2017年所有现役足球运动员。

(2) 数据说明(标签名称):

姓名 姓名

公民权国家

国家队位置

国家队号码

俱乐部所在俱乐部

俱乐部位置

俱乐部号码

加入俱乐部时间

合同到期时间

分数

高度

重量

擅长左(右)脚

出生日期

年龄 年龄

位置好

工作效率

非惯用脚的使用频率

技术等级

控球技巧

运球(运球)能力

打标能力

处理

压制能力

攻击能力

反击

进攻运动

想象

冷静的

从底部开始交叉

近路

长传

加速度

速度

体力

强的

平衡

敏捷

沥青

射门力量

射击

远射

曲线圆弧

任意球精准度

罚球

截击能力

守门员位置感

储蓄能力

守门员的踢球能力

丢球的机会

守门员反应

(3) 导入数据:

import numpy as np
import pandas as pd
df = pd.read_csv(r'C:\Users\Administrator\Desktop\zuqiu8543\football.csv')

(4)查看数据基本信息:

df.head()

中超球员数据库_中超联赛球员数据_中超球员数据统计

df.shape

检查是否有缺失数据:

df.isnull().sum()

中超球员数据统计_中超联赛球员数据_中超球员数据库

从运行结果可以看到,共有六列数据缺失,其中主要缺失两列,分别是:国家队位置、国家队编号。 缺席的原因可能是部分球员不在国家队。 他在球队任职,所以没有对应的号码和位置。 同时,‘俱乐部’、‘俱乐部地点’、‘俱乐部号码’、‘加入俱乐部时间’、‘合同到期时间’这五个指标也不在我们的研究范围之内。

因此,我们不对上述缺失值进行处理。 (不会影响我们后续的数据分析和可视化~)

2. 进行简单的数据分析

(1)查看玩家身高、体重的具体信息

首先我们使用 head() 来检查:

df[['Weight','Height']].head()

中超球员数据统计_中超球员数据库_中超联赛球员数据

可以看到,我们的数据有‘kg’、‘cm’等单位,所以我们先把这些单位去掉,并修改数据类型,方便后续操作。

(忘记做什么的同学可以看这里)

df['Height']=df['Height'].apply(lambda x:x[0:-3])
df['Weight']=df['Weight'].apply(lambda x:x[0:-3])
df[['Height','Weight']]=df[['Height','Weight']].astype('int') 

我们可以查看修改后的数据:

df[['Weight','Height']].head()

中超球员数据统计_中超球员数据库_中超联赛球员数据

使用 agg() 查看所有玩家身高和体重的平均值和最大值:

df[['Height','Weight']].agg(['mean','max','min'])

中超联赛球员数据_中超球员数据库_中超球员数据统计

可以看到,数据集中球员的平均身高达到了181cm,平均体重为75kg。

以上操作的主要目的是暖大家的手。 下面才是我们对这个玩家数据集分析的真正开始。

作为非职业球员(呵呵,球迷或者足球爱好者),我们当然还是想看看数据能否体现球员的个人实力。 那么下面我们就来进行深入的分析。

3.通过球员数据识别球员能力

在我们的玩家数据集中,一共有两个数据:评分和技术水平。 这两个数据是我们的主要研究目标。 我们将围绕这两个数据确定研究需求。

研究需求:

高分和低分的依据是什么()? 如何构建评分依据?

技术水平()的评价标准是什么? 如何构建评价标准?

研究需求初步解读:

首先我们加深一下对我们的目标栏目的理解:

(1) 得分():

df['Rating'].unique()

中超球员数据统计_中超球员数据库_中超联赛球员数据

df['Rating'].nunique()

可以看到,score()的目标值是连续的中超球员数据统计,一共有49个不同的值。

(二)技术水平():

df['Skill_Moves'].unique()

df['Skill_Moves'].nunique()

可以看到,技术级别()更像是分类型的,从1到5一共有五个级别。

进行玩家分析之前需要了解的事项:

众所周知,足球场上一共有11名球员,大致可以分为两类:1守门员,和非守门员(前锋、中场、后卫)。 守门员和非守门员的能力肯定是不同的。 存在差异,所以我们在通过球员数据来识别球员能力时,不能遵循同一套标准。

对于门将来说,我们更关注他的护框能力,这与其他非门将球员完全不同。

我们可以通过查看数据来进一步观察守门员和非守门员能力的差异:

我们提取了7列特征:

姓名 位置 速度 速度 射门 任意球准确度 射门节能能力 守门员反射能力

接下来,我们看看前五名球员之间的数值差异:

df[['Name','Preffered_Position','Speed','Finishing','Shot_Power','GK_Diving','GK_Reflexes']].head()

中超联赛球员数据_中超球员数据库_中超球员数据统计

上述五名球员中,前四名是非守门员,第五名是守门员。

从数字上可以清楚地看出差异。 (忘记各个特征中文名的同学可以去看上面的,我就不改数据表了)

下面开始正式分析球员能力值的评分标准~1.守门员评分标准

数据集中,GK的意思是守门员(守门员)。 同时,用来衡量守门员能力的主要特征有五个,分别是:

守门员的定位能力、守门员的踢球能力、守门员丢球的机会、守门员的反应

因此,我们可以提取这些列特征,连同球员得分和技能水平,将它们绘制成一个新的数据表——守门员数据表。

df_GK = df[['Name','Rating','Skill_Moves','GK_Positioning','GK_Diving'
            ,'GK_Kicking','GK_Handling','GK_Reflexes']][df['Preffered_Position']=='GK']

检查表状态:

df_GK.head()

中超球员数据统计_中超联赛球员数据_中超球员数据库

查看技能等级的分级():

df_GK['Skill_Moves'].unique()

可以看到,所有守门员中,技术级别只有1和2两个。

让我们进一步检查级别数:

df_GK['Skill_Moves'].value_counts()

可以看到,技能等级1的玩家有2002人,等级2的玩家只有1人,差距太大了。 其实L这里已经考虑了数据平衡,但是效果不是很好。

综合考虑后决定,在考虑守门员能力时,只考虑得分(),不考虑技术水平()。

(由于在数据表中,球员的单一特征得分越高,证明该球员的能力越突出。也就是说中超球员数据统计,这里的特征都是数值类型,而不是类别特征。因此,这里我们不需要独热编码。)

中超联赛球员数据_中超球员数据库_中超球员数据统计

正如您所看到的,特征列都是数字。

下面,我们将结合这五个特点,利用机器学习的方法和技术进行分析。 (这分为几个部分。由于篇幅原因,所有内容可能会分为几篇文章。)

1.回归树

首先,我们使用决策树中的r(回归树)进行分析。

1. 将数据集拆分为训练集和测试集

导入制作决策树所需的包:

from sklearn import tree
from sklearn.model_selection import train_test_split

首先,按特征和目标拆分原始数据集:

df_x=df_GK.drop(labels=['Name','Rating','Skill_Moves'],axis=1)
df_y1=df_GK.loc[:,'Rating']

中超球员数据统计_中超联赛球员数据_中超球员数据库

中超球员数据库_中超球员数据统计_中超联赛球员数据

然后,使用将数据分成训练集和测试集。

注意~这里我们指定了分割系数为0.3,这意味着7/10的数据将作为训练集,剩下的3/10的数据将作为测试集。

#指定评分为目标时:
X_train, X_test, Y_train, Y_test = train_test_split(df_x,df_y,test_size=0.3)

中超球员数据统计_中超联赛球员数据_中超球员数据库

让我们开始建模并进行数据训练:

reg = tree.DecisionTreeRegressor(random_state=0)
reg = reg.fit(X_train, Y_train)

检查测试集上的准确性(将在训练集上训练的模型应用于测试集并检查拟合得分)

score = reg.score(X_test, Y_test) 
score

可以看到拟合度比较高,这意味着这里我们可以使用回归树来预测玩家评分。

2.同时,我们还可以画出决策树。 (但如果考虑到实际问题中超球员数据统计,这里其实并不推荐这样做)

import graphviz
reg = tree.DecisionTreeRegressor(random_state=0)
reg = reg.fit(X_train, Y_train)
dot_data = tree.export_graphviz(reg
,out_file = None
,class_names=["球员评分"]
,filled=True
,rounded=True
)
graph = graphviz.Source(dot_data)
graph

此外,我们还可以利用随机森林回归、线性回归、逻辑回归,包括支持向量机等方法来进行模型拟合和预测。 当然,每种方法使用时的步骤和注意事项略有不同。 下次我会向你解释的。

以上就是内容。 感谢您的仔细阅读。 同时欢迎感兴趣的朋友一起讨论学习。 如果想了解更多可以阅读我的其他文章,也可以持续关注我的更新~

标签: 中超球员数据统计