R语言NBA球员数据挖掘简单实现
数据集下载地址:
链接:https://pan.baidu.com/s/1KN_A9JLMvHcl0hHTBSQ4HA
提取码:spsa
第一步骤:(导入csv数据)
使用read.table()导入一个带分隔符的文本文件,其输出类型为数据框。语法如下:
read.table(file , header=F , sep=”” ,quote , row.names , col.names , na.strings=”NA” , colClasses , skip , stringsAsFactors=T, blank.lines.skip=T, strip.white=F, text,…)
参数 | 参数的解释 |
---|---|
file | 需要读入的文件名或者路径。当需要读入的文件在R的工作目录下时,file=files.name,否则file=”文件的存储路径”,如以下代码中所示。也可以更改需读入文件的储存目录为R的工作目录,然后file=file.names即可读入文件,但此法比较繁琐,一般不推荐。 |
header | 是否文件的读入第一行,默认值为FALSE。 |
sep | 文件中分开数据的分隔符。默认为sep=”“,表示分隔符为一个或多个空格、换行或回车。若分隔符为逗号,则sep=”,”;若为制表符,则sep=”\t”。 |
quote | 设置如何引用字符型变量。若没有分隔符,则quote=”\”。 |
row.names | 用于指定行名的可选参数。 |
col.names | 若header=F,用于指定列名的可选参数.如col.names=c(“name”,”English”)。 |
na.strings | 用于表示缺失值的字符向量。默认为NA。即将NA判断为缺失值,也可自行定义表示缺失值的字符。 |
colClasses | 每一列的变量类型。如colClasses=c(“numeric”,”character”)表示将第一列定义为数值型,第二列定义为字符型。 |
skip | 读取数据前跳过的行数。 |
stringsAsFactors | 字符向量是否需转化为因子,默认值为T,可能会被colClasses所覆盖。处理大型文本文件时,设置为F可提高处理速度。 |
blank.lines.skip | 是否跳过空白行,默认值为T。 |
strip.white | 是否消除空白字符,默认值为F。 |
text | 一个指定文字进行处理的字符串。若text被设置了,则无需设置file,如以上直接在程序中嵌入数据集的代码所示。 |
下面使用read.table()来读取一个分隔符为逗号,名为“shot_logs”的csv文件,代码如下:
第二步骤:(处理数据)
数据(kaggle)来源:https://www.kaggle.com/dansbecker/nba-shot-logs/discussion/22971
鉴于许多小伙伴都打不开kaggle,这里给出百度云网盘的地址。btw,fanqiang 还是比较基本的。。。。。
链接:https://pan.baidu.com/s/1KN_A9JLMvHcl0hHTBSQ4HA
百度链接
提取码:spsa
#datamining demosetwd("D://data")#设置命名空间,即文件所在的位置shot_logs<-read.table("shot_logs.csv",header = T,sep = ",")
有关于header:(如下图header即为:player_name,如果导入数据后需要使用头行的名称,则需要将header设为T(true))
#加载包library(dplyr)library(magrittr)library(ggplot2)library(ggthemes)library(reshape2)#datamining demosetwd("D://data")shot_logs<-read.table("shot_logs.csv",header = T,sep = ",")#定义函数,用于计算后面每位球员的2分球命中次数two_get<-function(x){ #定义一个函数count<-length(x)n<-0for(i in 1:count){if(x[i]==2) n<-n+1 #n++}return(n)}#定义函数,用于计算后面每位球员的3分球命中次数three_get<-function(x){ count<-length(x)n<-0for(i in 1:count){if(x[i]==3) n<-n+1}return(n)}
#统计每位球员的投篮次数、命中次数、总得分、1分2分3分命中次数by_name<-group_by(shot_logs,player_name)%>%summarise(count=n(),made_num=sum(FGM),points=sum(FGM*PTS_TYPE),three_pts_num=three_get(as.numeric(PTS)),two_pts_num=two_get(as.numeric(PTS)),one_pts_num=made_num-two_pts_num-three_pts_num)
console编译:by_name
可获得如下图
:
目标1:观测球员出手次数与得分是否线性相关
把count变量作为自变量,points变量作为因变量,用lm()函数做一个简单的一元线性回归:
revelant<-lm(by_name$points~by_name$count,data = by_name)#用summary()函数得到相关参数summary(revelant)#用plot()函数绘制图形plot(by_name$count,by_name$points,main="出手次数与得分数的关系",xlab = "出手次数count",ylab = '得分数points')#单双引号都可以abline(revelant)
获得的参数:Call:
lm(formula = by_name$points ~ by_name$count, data = by_name)Residuals:Min 1Q Median 3Q Max
-125.019 -22.961 -3.369 17.396 169.290 Coefficients:Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.11594 5.41983 0.021 0.983
by_name$count 0.99706 0.01062 93.876 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 40.86 on 279 degrees of freedom
Multiple R-squared: 0.9693, Adjusted R-squared: 0.9692
F-statistic: 8813 on 1 and 279 DF, p-value: < 2.2e-16
根据summary()函数得到的参数我们可以看到,两个变量之间的相关系数是0.997,P值为2e-16远远小于0.05,而R-squared判定系数为0.969(表示回归直线可解释96.9%的总变差),说明两者显著相关,从图上也可以看出其相关性非常好,散点基本落在直线两侧,这也说明教练对于球员上场的安排情况十分合理,不存在投篮次数过多而得分较少或者得分很高但是投篮机会却很少的情况。
目标2:查看总得分前五名的球员和出手次数前五名的球员
代码如下:
#得分前五by_name.1<-by_name[order(-by_name$points),]by_name.1<-by_name.1[1:5,]#出手次数前五by_name.2<-by_name[order(-by_name$count),]by_name.2<-by_name.2[1:5,]
得分前5:
出手次数
目标3:得分前五名的球员在不同距离的投篮命中情况
#从数据原中挑出前五名球员的完整数据data.1<-filter(shot_logs,player_name=='mnta ellis'|player_name=='lebron james'|player_name=='klay thompson'|player_name=='james harden'|player_name=='stephen curry')#根据不同球员的投篮次数和命中次数绘制分面直方图ggplot(data=data.1,aes(SHOT_DIST,fill=factor(FGM)))+geom_histogram()+facet_grid(.~player_name)+theme_few()
stephen curry(库里)的表现相对来说是比较稳定的,而lebron james(詹姆斯)则在三分线内表现较好
目标4:得分前五名的球员命中2分球和3分球所占比例
#只留下命中的数据data.2<-filter(data.1,data.1$FGM==1)#根据得分情况绘制堆叠图ggplot(data = data.2,aes(x=player_name,fill=factor(PTS)))+geom_bar()+theme_few()
stephen curry(库里)的三分和二分比例最协调,而lebron james(詹姆斯)二分命中次数更多一些。
目标5:得分前五名的球员命中次数与距离的变化情况
ggplot(data=data.2,aes(x=SHOT_DIST))+geom_density()+facet_grid(player_name~.)+theme_few()
项目推荐:
2000多G的计算机各行业电子资源分享(持续更新)
2020年微信小程序全栈项目之喵喵交友【附课件和源码】
Spring Boot开发小而美的个人博客【附课件和源码】
Java微服务实战296集大型视频-谷粒商城【附代码和课件】
Java开发微服务畅购商城实战【全357集大项目】-附代码和课件
最全最详细数据结构与算法视频-【附课件和源码】
R语言NBA球员数据挖掘简单实现相关推荐
- R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置
R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录
- R语言图形用户界面数据挖掘包Rattle介绍、安装、启动、介绍(Using the rattle package for data mining)
R语言图形用户界面数据挖掘包Rattle介绍.安装.启动.介绍(Using the rattle package for data mining) 目录
- c++语言get:_用C++给R语言加速:Rcpp简单用法
作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识图谱等,著有& ...
- oracle rlw,Oracle数据库终于支持R语言 发力数据挖掘
据Oracle官方博客 最近更新的New R Interface to Oracle Data Mining Available for Download,甲骨文开始正式支持R语言在Oracle数据库 ...
- R语言学习笔记【简单语法总结-上】
简单语法总结[上]: R语言特征总览: 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许 ...
- R语言lm函数构建简单线性回归(建立线性回归模型)、拟合回归直线、通过方差分析按变异的来源把结果变量的自由度、平方和、平均平方和进行分解、使用回归平方和与总的平方和计算调整R方指标(调整后的决定系数)
R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.通过方差分析按变异的来源把结果变量的自由度.平方和.
- R语言自动提取新闻摘要的简单实现
之前用R做过一些文本处理的工作,主要就是对新闻做做分类.提取关键词之类的,通过jiebaR包和自定义词典可以轻松地完成大部分工作,分类也就是整理一下各类别的特征然后跑一个分类模型就能得到比较满意的结果 ...
- R语言(二)——简单线性模型中的指数变换
目录 一.数据 1.数据信息 2.数据处理 二.简单线性回归 三.指数变换 四.生存分析数据的Cox回归模型 一.数据 1.数据信息 口咽癌数据(pharynx.csv)是针对口咽若干位置癌细胞的临床 ...
- R语言do.call函数简单说明
Tips:可能有人对do.call函数不太了解, 这里简单举个例子说明此处的do.call使用效果. dat <- list(matrix(1:25, ncol = 5), matrix(4:2 ...
最新文章
- 芝麻HTTP:Scrapy-Splash的安装
- lua 循环语句 实例
- 互联网中网站建设如何体现出企业品牌的企业网络推广能力?
- Win64 驱动内核编程-2.基本框架(安装.通讯.HelloWorld)
- RabbitMQ消息队列(二):”Hello, World“
- 糖尿病动物模型知识点整理
- 小游戏掉帧卡顿启动慢运行内存不足……这些问题有解吗?
- uva 11536——Smallest Sub-Array
- 准备写个Spring Boot教程
- C++之预处理命令以及宏定义
- html搜索框如何加下拉框,js实现带搜索功能的下拉框
- 用纯JSP实现按条件查询数据库
- 小程序自定义tabbar占位问题
- 搜狗收录提交入口之搜狗泛目录实现
- 色彩配色基础泛谈《第一天》到底说了麻?
- linux系统盘下垃圾文件,Linux版一键清理系统垃圾文件
- mysql 引擎 切换_Mysql表引擎的切换
- Spring配置文件中的parent与abstract
- 拼图游戏 java_Java实现拼图游戏
- Windows 11录屏的方法
热门文章
- 1413:确定进制(C C++)
- 设计模式之禅之单一职责原则
- 微信内链接已禁止访问是什么情况?微信链接防封细节
- java做的桌面应用_把一个java web应用包装成桌面应用的简单做法
- hp1020打印机驱动下载地址
- 详细区分offsetX,clientX,pageX,screenX,layerX和X的区别
- 奥巴马,别让底特律变成你的越南
- Python课程入门之Pycharm创建PY文件的使用步骤与模板创建
- Django的Forms.py
- 零基础搭建Win系统Anaconda+Pytorch+OpenCV深度学习环境(Win10、Win11、RTX 3090显卡也适用)