01使用Python分析科比生涯数据

一、前言


本文所讲的实战内容是用机器学习的方法来分析科比职业生涯数据的实例,利用随机森林算法训练处一个预测科比投篮模型。主要用了python的numpy,pandas,matplotlib和sklearn库。

本文出现的所有代码,均可在我的github上下载,欢迎Follow、Star:github地址

二、设计思路


先来看看这份科比生涯的数据集:数据集下载

这里写图片描述
这里写图片描述

这个表格记录了科比30000多个镜头的详细数据,共有25个标签。

具体的设计思路是将这25个标签代表的数据进行分析,找出对科比投篮结果有影响的标签,利用机器学习中随机森林的算法训练出可以预测科比是否能够投篮命中的模型。

先来看看这25个标签具体代表什么(自己不是篮球的专业人士和爱好者,所以具体的内容可能有所出入,不过不会影响到分析结果)

  • action_type(用什么方式投的篮)
  • combined_shot_type(结合什么方式投篮)
  • game_event_id(游戏事件ID)
  • game_id(游戏ID)
  • la(投篮的经度)
  • loc_x (投篮的x坐标)
  • loc_y(投篮的y坐标)
  • lon(投篮的纬度)
  • minutes_remaining(离比赛结束还有多少分钟)
  • period(第几场)
  • playoffs(是不是季后赛)
  • season(赛季)
  • seconds_remaining(离比赛结束还有多少秒)
  • shot_distance(投篮离篮筐的的距离)
  • shot_made_flag (是不是进球了(主要的标签))
  • shot_type(2分球还是3分球区域)
  • shot_zone_area(投篮区域的表示方法一)
  • shot_zone_basic(投篮区域的表示方法二)
  • shot_zone_range(投篮区域的表示方法三)
  • team_id(队伍ID)
  • team_name(队伍名字)
  • game_date(比赛时间)
  • matchup(比赛双方队伍)
  • opponent(自己所在队伍名字)
  • shot_id(镜头ID)

可以看到,这25个标签中对于科比能否投篮命中有一些无关紧要的数据,比如team_id,因为这30000多份样本中全是在湖人队打的,shot_id,game_id等等这个数据也无关紧要,具体的分析将会在下面讲解。

三、数据分析


首先我们导入数据,编写代码如下

import pandas as pd

# 导入数据
filename= "data.csv"
raw = pd.read_csv(filename)
print(raw.shape)
print(raw.head())  #head函数打印前5行,如果需要打印前10行,这样写
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

运行结果如下

这里写图片描述

接下来我们再来分析这一份数据表,我们发现其中shot_made_flag这个标签竟然有缺失值,这个表示了科比是否进球了,作为最重要的数据,是不能随意进行填充的,我们必须删除掉这些样本进行下一步的工作,代码如下

import pandas as pd

# 导入数据
filename= "data.csv"
raw = pd.read_csv(filename)

kobe =  raw[pd.notnull(raw['shot_made_flag'])]
print(kobe.shape)
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

运行结果如下

这里写图片描述

此时我们只有25697个数据进行训练了。

接着我们分析lat,loc_x,loc_y,lon这4个标签,这4个标签说明了科比投篮的位置,而具体指的是什么呢,有什么关系吗,我们画散点图来看一下。

编写代码如下

import pandas as pd
import matplotlib.pyplot as plt

# 导入数据
filename= "data.csv"
raw = pd.read_csv(filename)


#删除shot_made_flag为空的数据项,并且命名为kobe用作训练
kobe =  raw[pd.notnull(raw['shot_made_flag'])]



#画散点图用来分析lat loc_x  loc_y lon这4个标签
alpha = 0.02   #指定一个数字,用于后面的透明度
plt.figure(figsize=(6,6))  #指定画图域
# loc_x and loc_y
plt.subplot(121)    #一行两列   第一个位置
plt.scatter(kobe.loc_x, kobe.loc_y, color='R', alpha=alpha)   #画散点图
plt.title('loc_x and loc_y')
# lat and lon
plt.subplot(122)    #一行两列   第二个位置
plt.scatter(kobe.lon, kobe.lat, color='B', alpha=alpha)
plt.title('lat and lon')
plt.show()
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

运行结果如图所示

这里写图片描述

我们大致可以看出,这4个坐标大致表示了距离篮筐的距离,那样的话,我们接下来用于数据处理的时候选择其中的一组数据即可了。

shot_type,shot_zone_area,shot_zone_basic,shot_zone_range 这4个标签代表了投篮的区域,其实还是说明一件事,这里就不做赘述了,当然shot_zone_area,shot_zone_basic,shot_

科比布莱恩特是美国职业篮球运动员,他的数据生涯可以通过使用Python进行分析Python是一种被广泛应用于数据分析的编程语言,它可以帮助我们处理和展示科比的篮球数据。 首先,我们可以使用Python数据处理库(例如Pandas)来读取和清洗科比的比赛数据。这些数据通常是以CSV或Excel文件格式存储。我们可以使用Pandas将数据加载到数据帧(DataFrame)中,并进行一些基本的数据清洗,例如去除重复值或缺失值。 接下来,我们可以使用Python进行一些基本的数据分析,例如计算科比在不同比赛中的得分、助攻和篮板数据。我们可以使用Matplotlib这样的可视化库来绘制图表,从而更好地理解和展示这些数据。 另外,我们可以根据不同的条件进行数据筛选和分组。例如,我们可以根据不同的对手或赛季将数据分组,并计算科比在这些不同情况下的平均得分或胜率。这可以帮助我们更好地理解科比在不同场合的表现。 此外,我们还可以利用Python的统计分析库(例如SciPy或StatsModels)来进行更复杂的数据分析。这包括使用回归模型来分析科比与其他因素(例如比赛时间、得分、队友等)之间的关系。 最后,我们可以使用Python的机器学习库(例如Scikit-learn)来构建预测模型,以预测科比在未来比赛中的表现。这可以通过训练监督学习模型,使用历史数据进行预测,然后根据模型的输出进行分析和讨论。 总而言之,使用Python进行科比数据生涯分析可以帮助我们更好地理解他在篮球比赛中的表现,并提供一些有趣的见解和洞察力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值