选择的数据集是NBA2013-2014赛季球员数据,该数据集来自网络并用于其所在文章(详见:https://www.dataquest.io/blog/python-vs-r/)。
笔者心(yi)血(shi)来(ren)潮(xing),在原数据文件基础上略加改动,用R软件在最后增加一列(allstar),该列中仅有1与0值(1代表该球员入选当赛季NBA全明星正赛,0代表该球员未能入选NBA全明星正赛),从而根据球员当赛季数据预测其能否入选全明星,对于像笔者这种喜欢NBA的童鞋是一件非常有意思的事情。输出新的数据文件nba2013.xlsx。
一、新数据集部分截图如下:
数据集列名有如下:
数据大小为:481行*32列
数据变量解释:
player:球员名字
pos:球员司职
age:球员年凉
bref_team_id:球队名称缩写
g:球员出场数
……
fg:投中球数
stl:抢断数
ast:助攻数
(不一一解释,其它请参考:http://stats.nba.com/help/glossary)
二、logistic建模代码:
1.读入数据:
说明:在倒数第二行代码中,选入的自变量有球员司职、年龄、投中球数、三分球数、二分球数、助攻数、抢断数、盖帽数、得分数,响应变量是allstar。
2.数据预处理:
详细请见代码注释,不多说!
3.用全部数据进行logistic建模,查看效果:
summary(glm_model)结果显示:很多自变量没通过验证。所以基于AIC准则逐步回归筛选变量,所得结果公式如上代码注释所示!
4.构造训练集测试集:
5.训练集建模&测试集预测:
三、结果:
下面仅仅把summary(glm_model)、step(glm_model)、训练集及测试集预测正确率结果贴一下,其它可以根据代码注释去了解啦!
正如上面所说,在用全部数据拟合的时候,所选的大多数自变量没通过验证。
逐步回归的部分截图,我们选用上面最后给出的自变量。
训练集及测试集预测正确率如上!测试集相对训练集预测正确率略低,感兴趣的童鞋可调试下训练集抽样比例(剧透:可能抽取0.69时结果最优),找出最优结果!
写在最后:简单写这么多,算是抛砖引玉!从本小案例可以看出特征的选择对于模型很重要,感兴趣的童鞋可以尝试下其它特征变量的选择对于模型的影响;也可以试试其它算法,从得到更好的模型及结果。
另,对于想尝试其它方法的童鞋,可进一步交流,笔者微信:lhf_Peter,加微信索要数据吧,就不公开啦,毕竟这是一个比较实际而且很好玩的事情!