【Python数学建模】nba预测,基于退役球员数据预测现役球员入选名人堂的可能性
模型目的:
本模型将基于逻辑回归模型,对历史和现役的nba球员数据进行建模,以是否进入名人堂作为模型预测的目标值进行预测,构建评分卡。以退役的nba球员数据和作为训练集来进行模型拟合,来预测现役球员中,谁进入名人堂的可能性更高。本模型最后产出为现役球员在当前的统计数据下入选名人堂的分数。
以下为建模部分
一. 环境准备:
1.1 编程语言:
Python 3.7.0
1.2 主要依赖的第三方包:
pandas, toad, scorecardpy, nba_api
1.3 数据准备:
数据来源:
nba_api: nba_api is an API Client for www.nba.com. This package intends to make theAPIs ofNBA.comeasily accessible and provide extensive documentation about them.
本模型将使用python第三方包nba_api中的api数据,初始建模指标主要包含以下四个部分的数据:
球员常规赛各项总数据。包含:总上场时间、总得分、总投篮次数、总投篮命中数等共计21个指标;
球员季后赛各项总数据。包含:总上场时间、总得分、总投篮次数、总投篮命中数等共计21个指标;
球员历史荣誉。包含:一阵次数、二阵次数、mvp次数等共计29个指标。其中,“Hall of Fame Inductee”(是否入选名人堂)为我们这次建模的y值,入选为1,不入选为0。
球队历史荣誉。包含:球队总冠军,如果某一球员在某一球员夺冠赛季中有过效力,则为拥有总冠军,共计1个指标。
所有数据通过球员id进行数据关联,本模型将使用所有nba历史及现役的且在nba有过常规赛和季后赛数据的球员作为建模样本,共计2800位球员,即2800条建模数据。
其中,将退役球员作为训练集,共计2465位球员,在这2465位球员中,有123位球员已入选名人堂,占比4.9%。本模型不设测试集,将使用在训练集上拟合的模型直接对剩余的335位球员进行预测,返回评分情况。
![](/assets/blank.gif)
图1 常规赛数据
![](/assets/blank.gif)
图2 个人荣誉数据
![](/assets/blank.gif)
图3 模型KS和AUC值
数据获取时间为2023.03.14
二. 数据处理与特征筛选:
主要包含以下内容:
剔除缺失值高于0.9的特征(不是所有的球员都有个人荣誉信息);
剔除iv值低于0.05的特征;
剔除相关性大于0.75的特征;
对剩余的数据的缺失值进行缺失值填充;
剔除部分远古球员缺失的特征(如周最佳次数、月最佳次数等);
完成该部分后,模型还剩余35个特征。
三. 特征变换:
将上面已处理完的特征进行woe转换,将特征情况转换为woe值。本部分将使用scorecardpy的woe_bin方法进行分箱,分箱方法为卡方分箱。
此处为了使得总冠军次数等特征变得更有区分度,将对部分特征进行手动切分分箱点,提高分箱的区分性。
![](/assets/blank.gif)
图4 分箱节点调整
四. 模型拟合:
使用逻辑回归建模,将转换后的建模数据进行模型拟合,得到拟合的模型,并对335条现役球员的数据进行预测,得出预测分。
![](/assets/blank.gif)
图5 评分分箱情况
五. 模型评估:
本模型训练集的ks值为85,auc值为96。
![](/assets/blank.gif)
图6 模型KS和AUC值
时间仓促,跑完之后一看数据感觉还行,就没有进行多余的优化了,主要还有以下几个部分可以进行优化:
建模数据可以进一步完善。如引入球员场均数据、per36数据、高阶数据等;
划分训练集和测试集。主要用来观察模型是否过拟合,但鉴于本模型正样本比较少,且效果还行,就没有划分测试集了。本模型可能会存在一定的过拟合。
调参。模型参数调整与不同样本浓度的设定。
多种模型的拟合预测和对比。本模型直接选用了逻辑回归模型,但亦可以选用xgb、决策树等算法进行多模型之间的比较。
建模步骤并未完整。woe转换后应再进行一次变量相关性处理。
Y值的滞后性。由于球员退役后需要一定的时间才能进入到名人堂,故近期退役的球员可能够得上名人堂的入选,但由于时间还没够,暂没有入选(如文斯卡特),该部分少量数据亦会影响模型本身的效果。
![](/assets/blank.gif)
图7 模型所预测的现役入选名人堂前三十球员
写在后面:
本文是一个技术帖,不希望各球星粉丝进行battle,有什么意见和想法的可以在下面进行讨论。
【Python数学建模】nba预测,基于退役球员数据预测现役球员入选名人堂的可能性相关推荐
- python可以用来数学建模吗_怎么用Python数学建模:python数据建模工具
怎么用Python数学建模 djcjfhfhhjdvjfhvfghhfgbdthhgdchfjfuivvh DSI方法在几何建模上的应用 本节叙述如何应用DSI方法来与曲面S相联系的二维图形图3.1) ...
- 【Python爬虫】2022年数学建模美赛B题数据爬取
2022年数学建模美赛B题数据爬取 背景 2022年的美赛刚刚落下帷幕,该题的一个主要难点在于数据的获取.很多人无法找到有效的数据,或者是无法获取数据. 比如找到了如下米德湖的水文数据,但是发现并没有 ...
- Python数学建模 正态分布检验
文章目录 基于Python的数学建模 数据生成 散点图/直方图 QQ图(Quantile-Quantile Plot) JB检验(大样本 n>30) Shapior-wilk检验(小样本 3 基 ...
- Python数学建模系列(四):数值逼近
文章目录 前言 往期文章 1. 一维插值 1.1 线性插值与样条插值(B-spline) 1.2 高阶样条插值 2. 二维插值 2.1 图像模糊处理--样条插值 2.2 二维插值的三维图 3. 最小 ...
- 【Python数学建模】SEIR传染病模型模型延伸-SEIDR模型(一),加入疫苗接种、政府管控、病毒变异等因素的影响
目录 一. SEIR传染病模型 二. SEIR模型的延伸--SEIDR模型 三. 模型延伸--影响因素1:疫苗接种 四. 模型延伸--影响因素2:政府管控 五. 模型延伸--影响因素3:病毒变异 写在 ...
- python数学建模(二)线性规划2.实战(思路清晰\过程完整、详细)
文章目录 (一)简单陈述本文章的内容 (二)线性规划例题(实战) 2.1 实战题目 2.2 符号规定和基本假设 2.3 模型的分析 2.4 模型的建立 2.5 模型一的求解和分析 2.5.1 (代码) ...
- python数学建模--绘图动态可视化图表
目录 写在本博客的开篇 关于matplotlib绘图的两种模式 阻塞模式 交互模式 总结 绘制动态图的例子 二维折线图 结果演示 代码 三维折线图 结果演示 代码 三维散点图 结果演示 代码 写在本博 ...
- 【Python数学建模常用算法代码(二)之BP神经网络】
Python数学建模常用算法代码(二) BP神经网络模型Python代码 import numpy as np import math import random import string impo ...
- Python数学建模系列(八):图论
文章目录 前言 往期文章 1 图论模型 - Dijkstra 样例1 2 图论模型-Floyd 样例2 3 机场航线设计 0.Airlines.csv数据 1.数据导入.观察变量 2.数据清洗 3.时 ...
最新文章
- OpenCV中图像显示你不知道的编程技巧
- 2021年3月12日 北京格灵深瞳Java开发实习面试(一面)
- 开发日记-20190808 随便聊聊
- java 文件上传 demo_java文件上传Demo
- Oracle 根据字符串的长度排序
- Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包
- 58 SD配置-科目分配-定义科目代码
- centos7.0查看IP
- 8003.ros2创建win10工程
- 放球问题 组合数学 转自百度百科
- Matlab实现Faster-RCNN目标检测
- 关于Assembly.CreateInstance中被启动对象读取配置文件的问题
- Netsparker扫描IIS网站——IIS PUT 任意文件写入
- 英语口语智能测试软件,口语易英语口语智能评测系统(英语口语训练软件)V6.91 最新版...
- 航空客运订票系统C语言程序设计,航空客运订票系统的程序算法?
- Android,保存图片并通知系统更新相册
- C语言随机产生26个大写字母
- 关于物联网卡流量统计的那些事儿
- 开源的高性能Java集合:GNU Trove介绍
- 很好用的程序员在线画图软件
热门文章
- BiSeNet:用于实时语义分割的双边分割网络-7min精简论文阅读系列-Leon
- 5个理由,你值得拥有电子实验记录本(ELN)
- HTML在指定位置画一个矩形,CAD如何在指定位置绘制矩形?
- POE直流供电后段整流电路(含网络变压器供电)示意图
- 解谜2019文娱产业,猫眼的互联网升级方法论
- Shader Graph 小草顶点动画
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 A. Visiting Peking University
- 要跑步,选对鞋!给新手的跑步鞋指南
- Makefile 读书笔记
- Java类和对象小结