NBA球星生涯数据集分析

源码链接:

https://download.csdn.net/download/qq_58012062/87541713?spm=1001.2014.3001.5501

数据提取:链接:https://pan.baidu.com/s/1kcttx000FfaLBk1QAJbBAw 
提取码:jbbk

1 实验背景

NBA 作为世界上水平最高的篮球联赛,吸引了无数的球迷。每一场 NBA 比 赛都会产生大量的数据信息,如果能够有效地运用这些数据,便可以充分发挥 出其潜在价值。

在每年赛季开始之前,大量的媒体专家都会对本赛季 NBA 常规赛的情况进 行预测,这其中球队战绩和明星球员的个人数据是大家着重讨论的话题。及时 而准确的完成对这些数据的预测一方面有利于各球队管理层在赛季进行前采 用合适的决策,另一方面可以最大化商业公司的利益。本实验采用机器学习的 方法在赛季开始前完成对本赛季 NBA 球队战绩以及个人数据的预测等。

2.1 NBA数据爬取(实验工具:PyCharm)(做一个简介,在这里不重点讲爬取)

(1)导入库和所需要爬取的网站

(2)发送请求,获取数据

(3)解析html

(4)解析opponent数据

(5)获取表格body数据

(6)存储成csv文件

(7)运行爬虫

3.NBA球星生涯数据集分析(EDA和随机森林)

3.1.1 项目介绍

 1.项目目标

通过分析科比和巴特勒职业生涯比赛的相关数据,掌握Numpy, Pandas, Matplotlib, Seaborn等常用数据分析库的用法,掌握常规的数据预处理的方法以及特征工程。掌握建立随机森林模型,模型参数调整,构建最好的模型,预测测试数据,并保存测试数据的方法。

   2.科比生涯简介

不论你是否看NBA,都应该听说过科比布莱恩特这个名字,它是最接近篮球之神乔丹的运动员。科比于1996年以13顺位的选秀身份进入联盟,一生都效力于洛杉矶湖人队。于2016年宣布退役,职业生涯获奖无数,5次NBA总冠军,2次FMVP,1次MVP,4次AMVP,18次全明星,生涯总得分超33000分,未来的名人堂球员等。在今年的1月26日,科比乘坐的私人飞机不幸失事,科比和二女儿吉安娜永远地离开了我们,这对无数球迷是一个莫大的打击。虽然科比离开了我们,但曼巴精神将激励着一代又一代的年轻人去追逐自己的梦想。

3.巴特勒生涯简介

吉米·巴特勒(Jimmy Butler),1989年9月14日出生于美国得克萨斯州休斯敦(Houston, Texas),美国职业篮球运动员,司职得分后卫/小前锋,效力于NBA迈阿密热火队。  

吉米·巴特勒于2011年通过选秀进入NBA,先后效力于公牛、森林狼、76人以及热火队,2014-15赛季荣膺进步最快球员,2020-21赛季当选NBA抢断王,6次入选NBA全明星阵容,4次入选NBA最佳阵容第三阵容,5次入选NBA最佳防守阵容第二阵容。

吉米·巴特勒代表美国男篮参加了2016年里约奥运会,并随队获得奥运会男篮金牌。

 

4.科比数据集简介随机森林

该数据集收录了自96赛季~2016赛季,科比整个职业生涯的比赛记录,共有30697条数据。每一条数据都是一次出手记录,其中包括动作类型,投篮类型,投射距离,投射位置,是否命中等25个特征。在该数据集中我们将以是否命中篮筐为标签值来进行分析,带有标签值的数据共25697条。我们将以这25697条数据作为训练数据进行建模,来对不带标签的5000条数据进行预测。

.巴特勒数据集简介EDA

该数据集收录了自2011赛季~至今,巴特勒整个职业生涯的比赛记录,共有20697条数据。每一条数据都是一次出手记录,其中包括动作类型,投篮类型,投射距离,投射位置,是否命中等25个特征。在该数据集中我们将以是否命中篮筐为标签值来进行分析,带有标签值的数据共15697条。我们将以这15697条数据作为训练数据进行建模,来对不带标签的5000条数据进行预测。

6.数据集中各列特征说明

列名称

含义

action_type

动作类型,如跳投,扣篮,上篮

combined_shot_type

组合投篮类型,如跳投,扣篮,勾手,擦板,罚球

game_event_id

比赛的编号

lat

出手的纬度

loc_x

出手的x坐标

loc_y

出手的y坐标

lon

出手的经度

minutes_remaining

距离比赛结束,还剩多少分钟

period

交手的场次,取值为1~7

playoffs

是否是打季后赛

season

赛季,如21~22赛季

seconds_remaining

距离比赛结束,还剩多少秒

shot_distance

出手距离

shot_made_flag

是否命中

shot_type

投射类型,两分球还是三分球

shot_zone_area

出手区域,左侧,右侧,中场,后场等

shot_zone_basic

另一种划分出手区域的方式,中线,禁区,油漆区,左侧底角,右侧底角等

shot_zone_range

出手区域的距离,小于8英尺,8-16英尺,16-24英尺,24英尺以上等

team_id

球队编号

team_name

球队名称

game_date

比赛日期

matchup

对阵双方

opponent

对手

game_id

比赛的编号

shot_id

出手的编号

3.1.2 项目知识点

探索性数据分析(EDA)

探索性数据分析 (EDA) 是一种数据分析方法,它采用多种技术(主要是图形):

1、最大限度地洞察数据集;

2、揭示底层结构;

3、提取重要变量;

4、检测异常值和异常;

5、测试基本假设;

6、开发简约模型;

7、确定最佳因子设置。

        

EDA 中使用的特定图形技术通常非常简单,由以下各种技术组成:

1、绘制原始数据(例如 数据轨迹、 直方图、 双直方图、 概率图、 滞后图、 块图和约登图)。

2、绘制简单的统计数据,例如原始数据的均值图、 标准差图、 箱线图和主效应图。

3、定位这些图以最大化我们的自然模式识别能力,例如每页使用多个图。

不同EDA问题应用不同工具:

1、对于单变量可以应用概率图、概率图相关系数图、单变量和多变量控制图、4-plot。

2、进行比较可使用块图、散点图、箱形图

3、进行筛选可以使用块图、概率图、双直方图

4、数据优化可以使用块图、最小二乘拟合、等高线图

5、回归问题可以使用最小二乘拟合、散点图、6-plot

6、对于时间序列可使用自相关图、光谱图、复解调幅度图、复解调相位图、ARIMA 模型

7、对于多变量分析可以使用星图、散点图矩阵、调节图、剖面图、主成分、聚类、Discrimination、分类等。

   

随机森林模型:       

   随机森林(Random Forest)是一种经典的Bagging模型,其弱学习器为决策树模型。如下图所示,随机森林模型会在原始数据集中随机抽样,构成n个不同的样本数据集,然后根据这些数据集搭建n个不同的决策树模型,最后根据这些决策树模型的平均值(针对回归模型)或者投票情况(针对分类模型)来获取最终结果。

    

随机森林的核心:

1)随机:训练样本的随机化(稳定性的基础是多样性)

2)森林:多颗决策树

随机森林的构造:

1)构造随机森林需要考虑的点:①只有一份训练数据;②确保多颗决策树要优于但棵决策树

2)随机森林的构造:

       

随机森林的预测:

分类问题:少数服从多数,比如说随机森林由三棵树构成,两棵树分类为同意,一棵树分类为不同意,那么最终结果为不同意

回归问题:取平均值

3.1.3 实验步骤

项目1:巴特勒生涯数据集分析(EDA)(实验工具:Jupyter)

(1).导入相关库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns;sns.set()
%matplotlib inlinefrom sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import KFold

(2).读取数据集CSV

Butler = pd.read_csv('Butler_data.csv')
Butler.head(4)

(3).数据集清洗和预处理 

Butler.describe() 

Butler.shape#处理前总共有30697个数据
Butler = Butler[pd.notnull(Butler['shot_made_flag'])]#通过以上数据集的列举对空值进行处理
Butler.describe() 
Butler.shape#处理后则使用25697个有用数据
Butler.info()#该数据集共有0-24也就是25个特征

(4). 数据探索性分析

单变量分析

plt.rcParams['font.sans-serif']=['SimHei']#防止中文标签报错
plt.rcParams['axes.unicode_minus']=False#防止负号报错
#查看巴特勒出手类型的分布
plt.figure(figsize = (10,6))
Butler['combined_shot_type'].value_counts().plot(kind = 'bar')
plt.xlabel('出手类型');plt.ylabel('出手次数');plt.title('吉米.巴特勒职业生涯不同出手类型的次数统计')

由上图可知巴特勒的拿手招式是2+1跳投,其次是突破上篮造成对手2+1

#查看巴特勒两分球,三分球的出手数
plt.figure(figsize = (8,6))
Butler['shot_type'].value_counts().plot(kind = 'bar')
plt.xlabel('远投还是中距离');plt.ylabel('出手次数');plt.title('吉米.巴特勒职业生涯远投和中距离的出手数')
plt.xticks(rotation = 0)

由上图可知巴特勒善于中距离跳投

#查看巴特勒出手距离的分布
plt.figure(figsize = (8,6))
Butler['shot_distance'].hist(bins = 100)
plt.xlabel('出手距离');plt.ylabel('出手次数');plt.title('吉米.巴特勒出手距离的分布')

从上图可知巴特勒出手集中在篮下10英尺到罚球线之间

#绘制箱型图
plt.figure(figsize = (6,4))
sns.boxplot(data = Butler,y = 'shot_distance')
plt.xlabel('出手距离');plt.ylabel('出手次数');plt.title('吉米.巴特勒出手距离的分布')

从上图可知巴特勒喜欢篮下强吃

#可视化巴特勒的出手区域,按照不同的标准划分的出手区域
import matplotlib.cm as cm
plt.figure(figsize  = (20,10))def scatter_plot_by_category(feat):alpha = 0.1gs = Butler.groupby(feat)cs = cm.rainbow(np.linspace(0,1,len(gs)))for g,c in zip(gs,cs):plt.scatter(g[1].loc_x,g[1].loc_y,color = c,alpha = alpha)plt.subplot(1,3,1)
scatter_plot_by_category(Butler['shot_zone_area'])plt.title('shot_zone_area')plt.subplot(1,3,2)
scatter_plot_by_category(Butler['shot_zone_basic'])
plt.title('shot_zone_basic')plt.subplot(1,3,3)
scatter_plot_by_category(Butler['shot_zone_range'])
plt.title('shot_zone_range')

图1为中距离热区,图二为上篮热区,图三为绝杀热区

Butler['shot_distance'].describe()#各距离投射占比
#巴特勒在各个位置投篮的次数
area = Butler['shot_zone_basic'].value_counts()
b = np.array([0,1,2,3,4,5,6])
plt.barh(b,area,align ='center')
plt.yticks(b,('中距离','进攻有理区','底线之外的三分','除进攻有理区外的禁区','右边底线三分','左边底线三分','后场'))
plt.xlabel('次数',fontsize=10)
plt.title('吉米.巴特勒在各区域投篮次数',fontsize=20)
plt.tight_layout()# 紧凑显示图片,居中显示
plt.show()

巴特勒对于中距离出手非常自信

双变量分析

#查看巴特勒的出手命中率
plt.figure(figsize = (6,4))
Butler['shot_made_flag'].value_counts(normalize = True).plot(kind = 'bar')
plt.xlabel('命中情况');plt.ylabel('命中个数');plt.title('吉米.巴特勒的出手命中率')

巴特勒出手命中率大约为43%,不输NBA大多数全明星球员

#观察不同出手类型与命中率之间的关系sns.barplot(data = Butler,x = 'combined_shot_type',y = 'shot_made_flag')

扣篮>擦板>上篮>勾手>跳投>补篮

#观察两分球与三分球的命中率sns.barplot(data = Butler,x = 'shot_type',y = 'shot_made_flag')

两分>三分

#观察出手距离与命中率之间的关系
sns.scatterplot(data = Butler, x = 'shot_distance',y = 'shot_made_flag' )

sns.violinplot(data = Butler, y = 'shot_distance',x = 'shot_made_flag' )

 巴特勒善于有把握方式的得分也就是近距离得分

从巴特勒数据集分析和结合数据资料得出:

由上图可以看出吉米.巴特勒在NBA里是一个攻防兼备,得分稳定的锋卫摇摆人(可打后卫也可打前锋)。巴特勒今年的季后赛下半场场均17分,投篮命中率59%,越是关键的时刻巴特勒越来劲。截止到目前为止,巴特勒已经拿下了3场40+,并且巴特勒每轮比赛都有40+的表现。从某种程度上说,巴特勒本赛季季后赛的发挥甚至超过了伦纳德,而且在洛瑞受伤之后,巴特勒还成为了热火场上最关键的组织点,进攻防守组织一把抓,巴特勒已经进入到了全新的模式当中。

对于巴特勒来说,过去他曾向热火众将许下诺言,他要夺冠而且一刻也不要等了,上赛季被淘汰时所有人都说巴特勒异想天开,现在的他则是用自己的实际行动来履行自己的诺言。如果本赛季巴特勒能够率队夺冠,那这又将是一个天天平平的普通球员,靠着自己的努力成为历史级别球员的故事。

项目2:科比生涯数据集分析(随机森林)(实验工具:Jupyter)

  1. 导入数据库

2.数据集清洗

结论:由上述结果可以看出,该数据集共有25个特征,其中24个特征都是完整的,只有shot_made_flag这个特征是存在缺失值的。所以接下来我们会将数据集切分为两部分,含有shot_made_flag的数据集作为训练集,确实shot_made_flag的数据集作为测试集。通过对训练集进行建模,来预测测试集上的shot_made_flag值。

3.数据预处理

结论:由于该测试集没有标签,所以我们需要通过交叉验证的方式将训练集分为训练样本和验证样本,用验证集来评估模型的好坏。最终选取最好的模型,对测试样本进行预测。

4.建立随机森林模型

结论:预测的结果放在kobe_prediction.csv中

从科比数据集分析和结合数据资料得出:

单看从科比比赛数据预测出的time_free training(空余训练时间)就可以看出科比训练有多么刻苦,左图每个格子代表科比每年中每个月的训练时间(单位:小时),而一个月最多是31天的744小时,左图最大为709小时(大多数靠近),最小为1小时(个别)。从这个数据我想到了科比曾说过的一句话。

勇于担当,不言弃,不服输,在逆境中创造奇迹,这正是曼巴精神所在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18574.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

近10年NBA球队常规赛排名变化——tableau 实现bump chart

上一篇文章「一个案例入门tableau——NBA球队数据可视化实战解析」我们学习了tableau的基本使用方法,本篇中我们继续深入,仍然通过实战案例来学习tableau制作bump chart。 本文目录如下: 案例引入可视化效果和数据结论西部联盟东部联盟 制作过…

如何开发微信礼品卡-服务端

微信礼品的官方文档,请戳微信礼品卡。 官方咨询邮箱:weixincardtencent.com。 本文仅记录微信礼品卡后端开发相关: 1.设计礼品卡数据库表结构 请仔细阅读微信礼品卡官方文档,再进行数据库表结构设计。 确保调用微信接口返回成…

文心千帆:PPT 制作、数字人主播一键开播等数十种应用场景惊艳到我了,下面给出简介和使用指南,快去使用起来吧

文心千帆:PPT 制作、数字人主播一键开播等数十种应用场景惊艳到我了,下面给出简介和使用指南,快去使用起来吧 文心千帆大模型平台是面向企业开发者的一站式大模型开发及服务运行平台。文心千帆不仅提供了包括文心一言底层模型(ER…

Linux随记(四)

一、记录ping不通,与处理方法。 问题描述: 对端链路 交换机地址IP:192.168.1.101笔记本网线直连对端交换机。配置ip192.168.1.102。 此时去Ping 192.168.1.101是通的.但是新的三层交换机连接对端交换机,vlan90 配置ip 192.168.1…

崩坏三 - 武器 - 童谣 NPR渲染分析(水体)

崩坏三 - 武器 - 童谣 NPR渲染分析(水体) 水体效果演示视频链接Shader 源码 水体效果 演示视频链接 https://www.bilibili.com/video/av68650714 Shader 源码 Shader "Water" {Properties{_WaterNormal("Water Normal", 2D) &qu…

旋转正方形怎么做html,p5.js绘制旋转的正方形_童谣_前端开发者

使用p5. 要还原的效果图 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持前端开发者。 首先建立画布大小,按照比例应该是5:3 function setup() { createCanvas(500, 300); } 设定矩形绘制格式,以…

崩坏三 - 武器 - 童谣 NPR渲染分析

崩坏三 - 武器 - 童谣 NPR渲染分析 童谣 NPR渲染演示视频链接大致想法Ramp高光效果边缘光效果镰刀刃部效果截图完整代码镰刀身体部分镰刀刃部分 童谣 NPR渲染 演示视频链接 https://www.bilibili.com/video/av68650714 大致想法 镰刀身体部分: 描边 Ramp多阶色 …

python啤酒童谣新手求助

为什么循环语句无法生效

chatgpt赋能python:Python高端玩法

Python高端玩法 如果你已经掌握了Python的基础知识,那么它还有许多高端玩法等着你去探索。在这篇文章中,我们将介绍一些Python高端玩法,包括函数式编程、元编程、异步编程、科学计算和机器学习。 函数式编程 Python是一门支持函数式编程范…

用于 LLM 应用开发的 LangChain 中文版

用于 LLM 应用开发的 LangChain 中文版 1. 模型、提示词和输出解析器1-1. 获取您的 OpenAI API 密钥1-2. Chat API : OpenAI1-3. Chat API : LangChain1-3-1. 模型1-3-2. 提示词模板 1-4. 输出解析器1-4-1. 将 LLM 输出字符串解析为 Python 字典 2. 记忆2-1. 会话缓冲区内存(Co…

MiniGPT4,开源了。

大家好,我是 Jack。 一个月前,我发布过一篇文章,讲解了 GPT4 的发布会。 ChatGPT 的对话能力,想必大家也早已体验过了,无论是文本生成能力,还是写代码的能力,甚至是上下文的关联对话能力&#…

飞书API调用尝试,实现飞书文档对于咨询的收集和实时的更新

摘要:主要就是记录一下自己从零开始做自己需要使用的脚本的过程,其中使用到chatgpt工具,也需要有记录作用,可以记录自己每天的工作进程,CSDN的是基于Markdown的方式,所以这个可以恰好植入到我的学习笔记的网…

恐怖的挥霍速度,每年烧上百亿美元,元宇宙大梦“压垮”Meta,苹果出手能否改写颓局...

点击上方“Python与机器智能”,选择“星标”公众号 第一时间获取价值内容 大数据文摘授权转载自AI前线 作者:刘燕,核子可乐 元宇宙玩家,似乎很擅长“画大饼”。 身为社交媒体巨头的掌门人,扎克伯格已经在虚拟现实之梦上…

GPT-4,大增长时代的序幕

作者|成诚 虽然我们早在 2017 年就预测了超大模型的到来,因此才搞了分布式深度学习框架 OneFlow(github.com/Oneflow-Inc/oneflow/),且 2020 年的 GPT-3 也掀起了大模型热潮(OneFlow——让每一位算法工程师…

ChatGPT4功能大全,附上一些官网推荐的例子

例子 探索一些示例应用程序的可能性 所有类别 问答 根据现有知识回答问题。 语法修正 将句子改成标准英语。 给二年级学生总结 将困难的文本翻译成更简单的概念。 自然语言到 OpenAI API 创建代码以使用自然语言指令调用 OpenAI API。 命令文本 将文本转换为编程命令。 英语到其…

《花雕学AI》34:用13种Prompt玩转AI聊天机器人—揭秘ChatGPT模型

引言: 聊天机器人是一种能够通过自然语言进行交流的智能系统,它可以模仿人类的对话方式,提供各种信息、服务或娱乐。随着人工智能技术的发展,聊天机器人的应用越来越广泛,从电商、教育、医疗、旅游等领域,到…

数字人入门文章速览

语音驱动三维人脸方法 OPPO 数字人语音驱动面部技术实践 【万字长文】虚拟人漫谈 Blendshape学习笔记 人脸重建速览,从3DMM到表情驱动动画 功能强大的python包(四):OpenCV 从Blendshapes到Animoji 3D人脸重建算法汇总 一、3D人脸重…

戴上脑机接口头盔,他用大脑跟别人「说话」

梅宁航 发自 凹非寺 量子位 报道 | 公众号 QbitAI 高位截瘫,全身器官失能,大脑还正常,却已口不能言。 怎么办? 现在最新研究进展来了——利用脑机接口,让别人跟患者的大脑直接对话。 近期,俄勒冈健康与科学…

如何用subtitle edit 将英文字幕转换成中文字幕

如何下载Subtitle edit和英文字幕转成中文字幕 Subtitle Edit是一个免费、中文化、使用方便、功能强大的影片字幕制作、同步、翻译与修改软件。这个软件内建影片即时预览功能,可以汇入与辨识字幕,支持SubRib、MicroDVD、Advanced Sub Station Alpha、Su…

whisper实践--基于whisper+pyqt5开发的语音识别翻译生成字幕工具

大家新年快乐,事业生活蒸蒸日上,解封的第一个年,想必大家都回家过年,好好陪陪家人了吧,这篇文章也是我在老家码的,还记得上篇我带大家基本了解了whisper,相信大家对whisper是什么,怎…