预测2019-2020赛季常规赛MVP

受新冠肺炎影响,2019-2020赛季NBA已经处于停摆状态,是否以及何时能复赛还不清楚。相关的各项评选如常规赛MVP、最佳阵容、最佳防守等也由于疫情暂停了。按照往年的赛程节奏,此时也应该进入常规赛收官阶段了。本文利用历史数据和本赛季常规赛已发生数据来预测本赛季(2019-2020赛季)的常规赛MVP。NBA常规赛MVP是NBA所有个人荣誉中的最高荣誉。像乔丹、科比、詹姆斯、库里等超级巨星曾经到获得过常规赛MVP。

一、数据和方法

  • 数据:13-14赛季、14-15赛季、15-16赛季、16-17赛季、17-18、19-20赛季共6个赛季常规赛数据
  • 方法:利用xgboost模型回归球员MVP得票率

1、xgboost可以做分类、回归、排序等任务,在R语言中通过设置objective参数进行明确

  • “reg:linear” :线性回归
  • “reg:logistic” :逻辑回归
  • “binary:logistic” :二分类的逻辑回归问题,输出为概率
  • “binary:logitraw” :二分类的逻辑回归问题,输出的结果为wTx
  • “count:poisson” :计数问题的poisson回归,输出结果为poisson分布
  • “multi:softmax” :让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参数num_class(类别个数)
  • “multi:softprob” :和softmax一样,但是输出的是ndata * nclass的向量,可以将该向量reshape成ndata行nclass列的矩阵。每行数据表示样本所属于每个类别的概率
  • “rank:pairwise” :做排序任务
  • 关于R语言实现xgboost模型的参数解释参考:https://blog.csdn.net/zc02051126/article/details/46711047

2、xgboost的输入变量必须是数值型类型,若是无序分类变量需要做one-hot预处理

  • 对于类别有序的类别型变量,比如 age 等,当成数值型变量处理可以的。对于非类别有序的类别型变量,推荐 one-hot。但是 one-hot 会增加内存开销以及训练时间开销。
  • 类别型变量在范围较小时(tqchen 给出的是[10,100]范围内)推荐使用
  • 原始数据字段:
出场次数首发次数出场时间投篮命中率命中个数出手次数
三分命中率三分命中个数三分出手次数罚球命中率罚球命中个数罚球出手次数
篮板数前场篮板数后场篮板数助攻数抢断数盖帽数
失误数犯规数得分胜场数负场数mvp得票率*

 

  • 本文应用数据集:https://mp.csdn.net/console/upDetailed

二、建模与预测

1.数据预处理

(1)原始数据预处理:

  • 由于本赛季并未进行完成,因此出场次数、首发次数、胜场数、负场数等受时间制约的特征需要进行标准化(此处适合用Min-Max的方式进行标准化)。因此在这里执行两个动作,一是取消首发次数、胜场数、负场数三个特征,新增首发率、出场胜率两个字段来表征,率指标可消除绝对值的时间因素影响;二是对每个赛季的出场次数特征进行标准化:

                                                                      {\color{Blue} }y_{i}=\frac{x_{i}-min\left ( x_{season j} \right ))}{max\left ( x_{season j} \right )-min\left ( x_{season j} \right )}

  • 鉴于实际评选过程中,球员上赛季是否为MVP对于球员是否能选上MVP影响重大,投票者会有审美疲倦或更苛刻的要求,“连任MVP要求是更高的”。因此增加一个分类特征:上赛季是否MVP。
  • NBA会分东西部赛区,且东西部的竞争格局有较大差异,“西强东弱”一直起来是一个趋势,投票者在投票时也会着重考虑东西部因素,因此增加一个分类特征:球员赛区。
  • 处理完后的直接进模型的特征:

出场次数归一

首发率出场时间投篮命中率命中个数出手次数
三分命中率三分命中个数三分出手次数罚球命中率罚球命中个数罚球出手次数
篮板数前场篮板数后场篮板数助攻数抢断数盖帽数
失误数犯规数得分出场胜率上赛季是否MVP球员赛区
mvp得票率*     

(2)模型数据预处理:

  • 有些中锋,或者出场时间较短的球员,其赛季数据中容易出现“命中率”类数据为缺失NA的情况,这种情况下根据实际意义可定义为0(例一个从未投出过三分球的球员,我们认为其三分命中率为0)。原始数据框中所有的NA数据都替换为0。

  • xgboost仅适用于数值型向量,因此在训练模型前需要对数据进行相应的转化预处理操作。另外,为了进一步提升运算效率,xgboost定义了独有的数据类型gb.DMatrix,方便对数据进行数值化和稀疏化处理。

mvpdata <- read.csv("mvpdata.csv")
mvpdata_13_17 <- mvpdata[which(mvpdata$season != "17-18" & mvpdata$season != "19-20"),] #13-14 ~ 16-17四个赛季为训练集
mvpdata_17_18 <- mvpdata[which(mvpdata$season == "17-18"),] #17-18赛季为测试集
train <- mvpdata_13_17[,5:29]
train[is.na(train)] <- 0 # NA替换为0
test <- mvpdata_17_18[,5:29]
test[is.na(test)] <- 0 # NA替换为0
library("xgboost")
library("Matrix")
train_matrix <- sparse.model.matrix(mvp_vote_rate ~ .-1, data = train)
test_matrix <- sparse.model.matrix(mvp_vote_rate ~ .-1, data = test)
train_label <- train[,25]
test_label <- test[,25]
train_final <- list(data=train_matrix,label=train_label) 
test_final <- list(data=test_matrix,label=test_label)
dtrain <- xgb.DMatrix(data = train_final$data, label = train_final$label) 
dtest <- xgb.DMatrix(data = test_final$data, label = test_final$label)

2.建模与评估

(1)训练模型及效果检验

  • 利用13-14、14-15、15-16、16-17四个赛季的数据作为训练集,来预测17-18赛季的MVP(17-18赛季数据作为测试集)。
  • 对球员MVP得票率影响最大的6个特征分别是:得分(53%)、抢断(12%)、命中数(10%)、出场胜率(9%)、助攻(5%)、出场时间(3%)。
FeatureGainCoverFrequencyImportance
scores0.5346356540.6754013620.163636360.534635654
steals0.1192847670.0209655390.163636360.119284767
shots_made0.1009050080.2379377180.036363640.100905008
wins_rate0.0928718390.0178242460.145454550.092871839
assists0.048288580.0123222780.109090910.04828858
appearances_time0.0256247470.0043656490.036363640.025624747
  • 本次模型的MAE=0.00117;模型预测得票率前十准确率为80%;模型预测的MVP为詹姆斯哈登,与实际情况一致。
  • 采用交叉验证,即利用其中4年的数据预测另外一年的MVP得票率,5年的MVP预测全部准确!本部分代码省略。
xgb <- xgboost(data = dtrain,max_depth=6, eta=0.5,  objective='reg:logistic', nround=25) #模型训练
importance <- xgb.importance(train_matrix@Dimnames[[2]], model = xgb)  
head(importance)
xgb.ggplot.importance(importance) #各特征重要性贡献
pre_xgb = predict(xgb,newdata = dtest) #测试集效果检验
pre_xgb
mae <- sum(abs(pre_xgb-test_label))/length(test_label) #由于真实值含有大量的0值,因此用MAE来进行模型评估,MAE=0.00117
mvpdata_17_18["pre_xgb"] <- pre_xgb
head(mvpdata_17_18[order(-mvpdata_17_18$mvp_vote_rate),][c("player_name","mvp_vote_rate")],10) #实际得票前十
head(mvpdata_17_18[order(-mvpdata_17_18$pre_xgb),][c("player_name","pre_xgb")],10) #模型得票前十

得票率排名实际情况模型预测
球员得票率球员得票率
1詹姆斯-哈登36.75%詹姆斯-哈登39.17%
2勒布朗-詹姆斯28.10%勒布朗-詹姆斯14.67%
3安东尼-戴维斯16.95%斯蒂芬-库里7.47%
4达米安-利拉德7.88%安东尼-戴维斯6.16%
5拉塞尔-威斯布鲁克2.89%拉塞尔-威斯布鲁克5.56%
6扬尼斯-阿德托昆博2.86%凯文-杜兰特3.47%
7凯文-杜兰特2.51%扬尼斯-阿德托昆博3.02%
8德玛尔-德罗赞1.22%德马库斯-考辛斯1.64%
9拉玛库斯-阿尔德里奇0.23%凯里-欧文1.38%
10斯蒂芬-库里0.19%达米安-利拉德0.52%

(2)模型应用实际预测

  • 利用13-14赛季~17-18赛季5个赛季的数据来预测19-20赛季的常规赛MVP。
  • 本次预测结果2019-2020赛季常规赛MVP为詹姆斯-哈登,其得票率为18.96%;得票率前6分别为:詹姆斯-哈登、勒布朗-詹姆斯、安东尼-戴维斯、拉塞尔-维斯布鲁克、扬尼斯-阿德托昆博、科怀-伦纳德。

mvpdata_13_18 <- mvpdata[which(mvpdata$season != "19-20"),]
train2 <- mvpdata_13_18[,5:29]
train2[is.na(train2)] <- 0 # NA替换为0
train_matrix2 <- sparse.model.matrix(mvp_vote_rate ~ .-1, data = train2)
train_label2 <- train2[,25]
train_final2 <- list(data=train_matrix2,label=train_label2)
dtrain2 <- xgb.DMatrix(data = train_final2$data, label = train_final2$label)  mvpdata_19_20 <- mvpdata[which(mvpdata$season == "19-20"),]
pred <- mvpdata_19_20[,5:29]
pred[is.na(pred)] <- 0 # NA替换为0
pred_matrix <- sparse.model.matrix(mvp_vote_rate ~ .-1, data = pred)
pred_label <- pred[,25]
pred_final <- list(data=pred_matrix,label=pred_label)
dpred <- xgb.DMatrix(data = pred_final$data, label = pred_final$label) xgb2 <- xgboost(data = dtrain2,max_depth=6, eta=0.5,  objective='reg:logistic', nround=25)
pre_xgb2 = predict(xgb2,newdata = dpred)
mvpdata_19_20["pre_xgb2"] <- pre_xgb2
write.table(mvpdata_19_20,"mvppredresult.csv")

三、结论与评价

  • 本次预测使用xgboost回归模型,通过数据预处理及特征工程建设,最终选取了关键的24个特征作为输入变量。模型效果由以下3点来说明:

          (1)由于模型实际值0较多,因此选取MAE指标来进行评估,MAE=0.00117。
          (2)采用交叉验证的方式,5个赛季的常规赛MVP均预测准确!
          (3)得票率前十预测的准确率超过80%。

  • 预测2019-2020年的常规赛MVP为詹姆斯-哈登,其得票率为18.96%,紧随其后的球员为勒布朗-詹姆斯、安东尼-戴维斯、拉塞尔-维斯布鲁克、扬尼斯-阿德托昆博、科怀-伦纳德。虽然我们有可能永远无法验证本次预测是否准确(NBA停摆,本赛季的MVP评选可能取消),但是至少这是对联盟500多位球员本赛季表现的一个客观评估。
  • 最后说一下不足,本次预测选取了超级客观的24个特征,都是实实在在的赛场数据。但是在实际的评选过程中需要考虑的主观因素还有很多,如:球员的招黑程度/舆论风向,是否抱团组成三巨头,是否加入了一个已经具有夺冠实力的球队等;球员打球是否劲爆/飘逸,具有观赏性,狂造犯规骗罚球假摔大家都不喜欢,努力偏执场场绝杀肯定占优势;球员赛场外的表现,领导力、慈善等等。
  • 完。

 

 

 


补充几行代码参考:

本文用的是一个回归任务,但是xgboost做分类的情况非常多,分类任务的评估(ROC、AUC):

pre_xgb = round(predict(xgb,newdata = dtest))
table(test_label,pre_xgb,dnn=c("true","pre"))#ROC曲线
xgboost_roc <- roc(test_label,as.numeric(pre_xgb))
plot(xgboost_roc, print.auc=TRUE, auc.polygon=TRUE,grid=c(0.1, 0.2),grid.col=c("green","red"),max.auc.polygon=TRUE,auc.polygon.col="skyblue",print.thres=TRUE,main='ROC curve')

 

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

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

相关文章

今天nba预测分析_焰神体育【NBA】赛事推荐预测分析:1月15日《开拓者》vs《步行者》...

波特兰开拓者(主) VS 印第安纳步行者 比赛时间&#xff1a;2021 1月15日 11:00 印第安纳步行者队 周四的大新闻是詹姆斯哈登在连续几周表现不佳后终于如愿以获&#xff0c;被交易到布鲁克林篮网队。 印第安纳步行者队用奥拉迪波交换莱弗里特到火箭。 凯文-普理查德可以说是今天…

前端图片显示不出来

原来的代码是 <img src"Release/warn.png">给路径加上 / 就可以了 <img src"/Release/warn.png"> 然后就正常显示了

页面加载微信聊天记录图片不显示问题

今天在做微信客服功能的时候页面通过异步请求微信的聊天记录&#xff0c;并把获取的结果appendchild页面中&#xff0c;发现微信的图片无权加载。如下图&#xff1a; 经过查阅资料得知&#xff0c;因为微信加载图片是通过一个地址请求然后返回的真是的图片地址&#xff0c;在请…

为什么计算机没有桌面显示不出来,​为什么电脑图片显示不出来

我们日常使用的电脑中&#xff0c;往往会有一些图片保存下来&#xff0c;用户想要打开自己需要的图片时&#xff0c;也可以通过显示的缩略图来查找&#xff0c;然而最近有用户的电脑桌面上的图片总是不显示出来&#xff0c;这让我们需要一张一张的进行查看&#xff0c;那么为什…

为什么html中图片显示不出来,网页图片不能显示 网页图片显示不出来的解决办法...

很多朋友上网遇到这样一种情况在浏览网页的时候发现网页中德图片不显示&#xff0c;(电脑百事网)一般现象是要门图像位置是空白&#xff0c;要么图像位置显示一个红叉&#xff0c;如下图所示&#xff0c;一般来说网页图片不显示主要影响页面美观&#xff0c;对我们影响相对不大…

在html中图片不显示不出来,网页图片显示不出来

很多小伙伴在打开网页的时候&#xff0c;发现网页的图片加载不出来&#xff0c;显示一个的标志&#xff0c;这是怎么一回事呢?可能是你的网速过低&#xff0c;等待一会就可以了&#xff0c;也可能是设置里面没有把显示图片打勾&#xff0c;具体的解决方法下面一起来看看吧。 显…

为什么html中图片显示不出来,网页图片显示不出来是什么原因?

原标题&#xff1a;网页图片显示不出来是什么原因&#xff1f; 在平时生活上网的过程&#xff0c;我们常常会遇到网页虽然是正常打开了&#xff0c;但网页上的图片却无法显示出来&#xff0c;无论怎么刷新也无法显示呢&#xff1f;一个网页打开正常与否&#xff0c;其实由很多因…

html浏览器图片不显示图片,教你网页图片显示不出来怎么办

网页是构成网站的基本元素&#xff0c;是一个包含HTML标签的纯文本文件&#xff0c;而文字与图片是构成一个网页的最基本的元素。今天&#xff0c;小编就给大家介绍一下网页图片显示不出来的解决方法&#xff0c;有需要就来了解一下吧 在查看网页的时候最重要的就是图片&#x…

流利阅读 2019.2.27 How sky-high rents forced people into imaginative alternatives

下载 笔记版/无笔记版 pdf资料&#xff1a; GitHub - zhbink/LiuLiYueDu: 流利阅读pdf汇总 本文内容全部来源于流利阅读。流利阅读对每期内容均有很好的文章讲解&#xff0c;向您推荐。 您可以关注微信公众号&#xff1a;流利阅读 了解详情。 How sky-high rents forced people…

V-Net 《Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification》阅读理解笔记

V-Net 《Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification》 这篇文章是发表在2018年ACL上的&#xff0c;是抽取式的。在微软发布的MS MARCO数据集和百度发布的中文数据集DuReader上得到了SOTA效果。 分以下四部分介绍&#xff1a; Mot…

掌握这15个可视化图表,小白也能轻松玩转数据分析

大数据时代&#xff0c;数据驱动决策。处理不好庞大、复杂的数据&#xff0c;其价值将大打折扣。 那如何缩短数据与用户的距离&#xff1f;让用户一眼Get到重点&#xff1f;让老板为你的汇报方案鼓掌&#xff1f; 本文通过连环15关&#xff0c;层层深入&#xff0c;传你数据匹…

几种可视化数据分析图表的使用

图表简洁大方、一目了然&#xff0c;利用图表工具就能轻松实现&#xff0c;是数据分析中常采用的方式。今天利用在雀书无代码平台搭建的图表来介绍几种常见数据分析图表的使用。 1. 柱状图 柱状图可以显示一段时间内的数据变化或显示各项之间的比较情况&#xff0c;主要使用颜…

数据分析——可视化图表

1、柱状图 展示多个分类的数据变化和同类别各变量之间的比较情况。 适用&#xff1a;对比分类数据&#xff08;比较不同的数值&#xff09;。 局限&#xff1a;分类过多则无法展示数据特点。 相似图表&#xff1a; 1&#xff09;堆积柱状图。比较同类别各变量和不同类别变量…

掌握这6个可视化图表,小白也能轻松玩转数据分析

今天我们来说一说数据可视化&#xff0c;想必很多人在入门数据分析之后&#xff0c;就会经常进行可视化的工作&#xff0c;所谓一图胜千言&#xff0c;图表用的好&#xff0c;真的是会事半功倍的。但现实情况下&#xff0c;很多人遇到的问题是&#xff1a; 你做的图表太丑了&am…

excel数据分析 - 13个图表可视化技巧

目录 一、对比分析类图表 1 漏斗图 2 指标完成度 3 完成度对比图 4 滑珠图 5 仪表盘 6 跑道图 二、分布分析类图表 1 旭日图 2 瀑布图 3 气泡图 4 箱形图 5 旋风图 三、图表优化 1 添加底部数据表 2 更改条形图的样式 ① 操作说明 ② 应用-五星级图制作 一、…

数据分析--Excel数据可视化(图表)

Excel组成元素 Excel图表类型与用途 饼状图(个体占总比的时候选择使用) 案例1&#xff1a;地区/销售额---》饼状图 方案&#xff1a;&#xff08;1&#xff09;生成图表&#xff1a;选中---》插入---》二维饼图&#xff08;2&#xff09;数据显示&#xff1a;➕---》数据标签--…

数据分析利用pyechart套模版制作图片,解决数据轻松出图!

pyechart 官网地址&#xff1a;pyecharts - A Python Echarts Plotting Library built with love. 柱状图&#xff1a; from pyecharts.charts import Bar from pyecharts import options as opts # 内置主题类型可查看 pyecharts.globals.ThemeType from pyecharts.globa…

Excel数据分析(八)图表

一&#xff0c;图表的理论基础 1&#xff0c;什么情况下需要用到图表 1&#xff09;为了揭示数据规律时&#xff0c;可以用图表&#xff0c;比纯数据的文本更形象。 2&#xff09;需要用数据说服他人 3&#xff09;为了展示专业素养&#xff0c;可以参照一些国际知名出版社…

60 种数据图表,制作工具和使用场景(建议收藏)

来源&#xff1a;数据分析1480 全文共 9459 个字&#xff0c;建议阅读 15 分钟 可视化图表种类如此之多&#xff0c;什么场景下应该用什么图表展示&#xff0c;是一个让人头秃的难题。 数据可视化的爱好者Severino Ribecca&#xff0c;他在自己的网站上收录了 60 种可视化图表样…

33种经典图表类型总结,轻松玩转数据可视化

导读&#xff1a;随着时代的发展&#xff0c;越来越多的数据量堆积&#xff0c;然而这些密密麻麻的数据的可读性较差并且毫无重点&#xff0c;而数据可视化更加直观有意义&#xff0c;更能帮助数据更易被人们理解和接受。 因此运用恰当的图表实现数据可视化非常重要&#xff0c…