前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kaggle案例重复:科比的投篮选择之一

kaggle案例重复:科比的投篮选择之一

作者头像
用户7010445
发布2020-03-03 14:29:19
1.1K0
发布2020-03-03 14:29:19
举报

以下内容为kaggle网站上的一个案例;原文地址 Kobe Bryant Shot Selection。主要内容是探索科比20年NBA生涯的数据,包括进攻方式,出手距离和出手区域,命中率等。

原文很长,准备分成几个部分来重复,今天是第一部分

读入数据、查看数据维度、删除缺失值等
代码语言:javascript
复制
shots<-read.csv("data.csv")
dim(shots)
[1] 30697    25

可以看到原数据集总共包括25个变量,30697行数据 删除缺失值所在的行

代码语言:javascript
复制
shots<-na.omit(shots)
dim(shots)
[1] 25697    25

删除缺失值后数据少了5000条。因为kaggle贴出的数据集目的为:是否可以根据科比20年职业生涯的出手数据来预测下一次投篮是否可以命中。所以在原数据集中删除了5000条shotmadeflags。这部分用来做测试集。(学英语学英语:Using 20 years of data on Kobe's swishes and misses, can you predict which shots will find the bottom of the net?)。这句话中的两个生词:swishesandmisses; find the bottom of the net

加载本次分析所需要的R包
代码语言:javascript
复制
library(ggplot2)  
library(tidyverse)
library(gridExtra)

ggplot2用来作图 tidyverse用来整合数据 gridExtra用来拼图(ggplot2出图拼接有一个专门的R包ggpubr,很好用)

数据可视化

散点图看一下科比的投篮方式(shot type)

首先看一下数据集中的combinedshottype变量中都包括哪些值

代码语言:javascript
复制
unique(shots$combined_shot_type)
[1] Jump Shot Dunk      Layup     Tip Shot  Hook Shot Bank Shot
Levels: Bank Shot Dunk Hook Shot Jump Shot Layup Tip Shot

投篮方式主要包括六种类型

Jump Shot

Dunk

Layup

Tip Shot

Hook Shot

Bank Shot

跳投

扣篮

上篮

补篮

勾手

擦板

散点图可视化

代码语言:javascript
复制
ggplot()+
  geom_point(data= shots %>% filter(combined_shot_type == "Jump Shot"),
             aes(x=lon,y=lat),color="grey",alpha=0.3)+
  geom_point(data = shots %>% filter(combined_shot_type != "Jump Shot"),
             aes(x=lon,y=lat,color=combined_shot_type),alpha=0.8)+
  labs(title="Shot type")+
  ylim(c(33.7,34.0883))+theme_void()+
  theme(legend.title = element_blank(),
        plot.title = element_text(hjust=0.5))

可以看出绝大部分进攻都以跳投结束

散点图出手距离、柱形图每个距离范围出手次数

shotzonerange变量中包含的值

代码语言:javascript
复制
unique(shots$shot_zone_range)
[1] 8-16 ft.        16-24 ft.       Less Than 8 ft. 24+ ft.        
[5] Back Court Shot
Levels: 16-24 ft. 24+ ft. 8-16 ft. Back Court Shot Less Than 8 ft.

feet 英尺;1英尺等于0.3048米 NBA三分线7.25米;23.9英尺

代码语言:javascript
复制
p1<-ggplot(data=shots,aes(x=lon,y=lat))+
  geom_point(aes(color=shot_zone_range))+
  labs(title="Shot zone range")+
  ylim(c(33.7,34.0883))+
  theme_void()+
  theme(legend.position="none",
        plot.title=element_text(hjust=0.5))
p2<-ggplot(shots,aes(x=fct_infreq(shot_zone_range)))+
  geom_bar(aes(fill=shot_zone_range))+labs(y="Frequency")+
  theme_bw()+
  theme(axis.title.x=element_blank(),legend.position="none")
grid.arrange(p1,p2,layout_matrix=cbind(c(1,2)))

根据柱形图可以看出篮下和长两分是科比的主要进攻方式

这里遇到了一个新函数 fac_infreq(),之前没有接触过。作用是因子变量排序。小例子

代码语言:javascript
复制
f<-factor(c("b","b","a","c","c","c"))
f
[1] b b a c c c
Levels: a b c
fct_infreq(f)
[1] b b a c c c
Levels: c b a
fct_inorder(f)
[1] b b a c c c
Levels: b a c

这里很神奇的是p1和p2的颜色可以对应上,暂时还搞不懂是什么原理。

出手区域散点图,柱形图
代码语言:javascript
复制
unique(shots$shot_zone_area)
[1] Left Side(L)          Left Side Center(LC) 
[3] Right Side Center(RC) Center(C)            
[5] Right Side(R)         Back Court(BC)       
6 Levels: Back Court(BC) Center(C) ... Right Side(R)

出手区域被分为六个部分

代码语言:javascript
复制
p3<-ggplot(shots,aes(x=lon,y=lat))+
  geom_point(aes(colour=shot_zone_area))+
  labs(title="Shot zone area")+
  ylim(c(33.7,34.0883))+theme_void()+
  theme(legend.position = "none",
        plot.title=element_text(hjust=0.8))
p4<-ggplot(shots,aes(x=fct_infreq(shot_zone_area)))+
  geom_bar(aes(fill=shot_zone_area))+
  labs(y="Frequency")+theme_bw()+
  theme(axis.text.x=element_text(size=7),
        axis.title.x=element_blank(),
        legend.position="none")
grid.arrange(p3,p4,layout_matrix=cbind(c(1,2)))

从上图可以看出右侧区域是科比比较喜欢的进攻区域

投篮区域根据另一个原则划分(散点图、柱形图)
代码语言:javascript
复制
unique(shots$shot_zone_basic)
[1] Mid-Range             Restricted Area       In The Paint (Non-RA)
[4] Above the Break 3     Right Corner 3        Backcourt            
[7] Left Corner 3        
7 Levels: Above the Break 3 Backcourt ... Right Corner 3

Mid-Rnage Restricted Area 限制区 In the Paint(Non-RA) 限制区以外的油漆区 Above the Break 3 踩线三分???Right Corner 3 Left Corner 3 Backcourt后场

从上图可以看出中距离是科比的主要进攻方式

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据可视化
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档