模型目的:

本模型将基于逻辑回归模型,对历史和现役的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数据,初始建模指标主要包含以下四个部分的数据:

  1. 球员常规赛各项总数据。包含:总上场时间、总得分、总投篮次数、总投篮命中数等共计21个指标;

  1. 球员季后赛各项总数据。包含:总上场时间、总得分、总投篮次数、总投篮命中数等共计21个指标;

  1. 球员历史荣誉。包含:一阵次数、二阵次数、mvp次数等共计29个指标。其中,“Hall of Fame Inductee”(是否入选名人堂)为我们这次建模的y值,入选为1,不入选为0。

  1. 球队历史荣誉。包含:球队总冠军,如果某一球员在某一球员夺冠赛季中有过效力,则为拥有总冠军,共计1个指标。

所有数据通过球员id进行数据关联,本模型将使用所有nba历史及现役的且在nba有过常规赛和季后赛数据的球员作为建模样本,共计2800位球员,即2800条建模数据。

其中,将退役球员作为训练集,共计2465位球员,在这2465位球员中,有123位球员已入选名人堂,占比4.9%。本模型不设测试集,将使用在训练集上拟合的模型直接对剩余的335位球员进行预测,返回评分情况。

图1 常规赛数据

图2 个人荣誉数据

图3 模型KS和AUC值

数据获取时间为2023.03.14


二. 数据处理与特征筛选:

主要包含以下内容:

  1. 剔除缺失值高于0.9的特征(不是所有的球员都有个人荣誉信息);

  1. 剔除iv值低于0.05的特征;

  1. 剔除相关性大于0.75的特征;

  1. 对剩余的数据的缺失值进行缺失值填充;

  1. 剔除部分远古球员缺失的特征(如周最佳次数、月最佳次数等);

完成该部分后,模型还剩余35个特征。


三. 特征变换:

将上面已处理完的特征进行woe转换,将特征情况转换为woe值。本部分将使用scorecardpy的woe_bin方法进行分箱,分箱方法为卡方分箱。

此处为了使得总冠军次数等特征变得更有区分度,将对部分特征进行手动切分分箱点,提高分箱的区分性。

图4 分箱节点调整


四. 模型拟合:

使用逻辑回归建模,将转换后的建模数据进行模型拟合,得到拟合的模型,并对335条现役球员的数据进行预测,得出预测分。

图5 评分分箱情况


五. 模型评估:

本模型训练集的ks值为85,auc值为96。

图6 模型KS和AUC值

时间仓促,跑完之后一看数据感觉还行,就没有进行多余的优化了,主要还有以下几个部分可以进行优化:

  1. 建模数据可以进一步完善。如引入球员场均数据、per36数据、高阶数据等;

  1. 划分训练集和测试集。主要用来观察模型是否过拟合,但鉴于本模型正样本比较少,且效果还行,就没有划分测试集了。本模型可能会存在一定的过拟合。

  1. 调参。模型参数调整与不同样本浓度的设定。

  1. 多种模型的拟合预测和对比。本模型直接选用了逻辑回归模型,但亦可以选用xgb、决策树等算法进行多模型之间的比较。

  1. 建模步骤并未完整。woe转换后应再进行一次变量相关性处理。

  1. Y值的滞后性。由于球员退役后需要一定的时间才能进入到名人堂,故近期退役的球员可能够得上名人堂的入选,但由于时间还没够,暂没有入选(如文斯卡特),该部分少量数据亦会影响模型本身的效果。

图7 模型所预测的现役入选名人堂前三十球员

写在后面:

本文是一个技术帖,不希望各球星粉丝进行battle,有什么意见和想法的可以在下面进行讨论。

【Python数学建模】nba预测,基于退役球员数据预测现役球员入选名人堂的可能性相关推荐

  1. python可以用来数学建模吗_怎么用Python数学建模:python数据建模工具

    怎么用Python数学建模 djcjfhfhhjdvjfhvfghhfgbdthhgdchfjfuivvh DSI方法在几何建模上的应用 本节叙述如何应用DSI方法来与曲面S相联系的二维图形图3.1) ...

  2. 【Python爬虫】2022年数学建模美赛B题数据爬取

    2022年数学建模美赛B题数据爬取 背景 2022年的美赛刚刚落下帷幕,该题的一个主要难点在于数据的获取.很多人无法找到有效的数据,或者是无法获取数据. 比如找到了如下米德湖的水文数据,但是发现并没有 ...

  3. Python数学建模 正态分布检验

    文章目录 基于Python的数学建模 数据生成 散点图/直方图 QQ图(Quantile-Quantile Plot) JB检验(大样本 n>30) Shapior-wilk检验(小样本 3 基 ...

  4. Python数学建模系列(四):数值逼近

    文章目录 前言 往期文章 1. 一维插值 ​1.1 线性插值与样条插值(B-spline) 1.2 高阶样条插值 2. 二维插值 2.1 图像模糊处理--样条插值 2.2 二维插值的三维图 3. 最小 ...

  5. 【Python数学建模】SEIR传染病模型模型延伸-SEIDR模型(一),加入疫苗接种、政府管控、病毒变异等因素的影响

    目录 一. SEIR传染病模型 二. SEIR模型的延伸--SEIDR模型 三. 模型延伸--影响因素1:疫苗接种 四. 模型延伸--影响因素2:政府管控 五. 模型延伸--影响因素3:病毒变异 写在 ...

  6. python数学建模(二)线性规划2.实战(思路清晰\过程完整、详细)

    文章目录 (一)简单陈述本文章的内容 (二)线性规划例题(实战) 2.1 实战题目 2.2 符号规定和基本假设 2.3 模型的分析 2.4 模型的建立 2.5 模型一的求解和分析 2.5.1 (代码) ...

  7. python数学建模--绘图动态可视化图表

    目录 写在本博客的开篇 关于matplotlib绘图的两种模式 阻塞模式 交互模式 总结 绘制动态图的例子 二维折线图 结果演示 代码 三维折线图 结果演示 代码 三维散点图 结果演示 代码 写在本博 ...

  8. 【Python数学建模常用算法代码(二)之BP神经网络】

    Python数学建模常用算法代码(二) BP神经网络模型Python代码 import numpy as np import math import random import string impo ...

  9. Python数学建模系列(八):图论

    文章目录 前言 往期文章 1 图论模型 - Dijkstra 样例1 2 图论模型-Floyd 样例2 3 机场航线设计 0.Airlines.csv数据 1.数据导入.观察变量 2.数据清洗 3.时 ...

最新文章

  1. OpenCV中图像显示你不知道的编程技巧
  2. 2021年3月12日 北京格灵深瞳Java开发实习面试(一面)
  3. 开发日记-20190808 随便聊聊
  4. java 文件上传 demo_java文件上传Demo
  5. Oracle 根据字符串的长度排序
  6. Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包
  7. 58 SD配置-科目分配-定义科目代码
  8. centos7.0查看IP
  9. 8003.ros2创建win10工程
  10. 放球问题 组合数学 转自百度百科
  11. Matlab实现Faster-RCNN目标检测
  12. 关于Assembly.CreateInstance中被启动对象读取配置文件的问题
  13. Netsparker扫描IIS网站——IIS PUT 任意文件写入
  14. 英语口语智能测试软件,口语易英语口语智能评测系统(英语口语训练软件)V6.91 最新版...
  15. 航空客运订票系统C语言程序设计,航空客运订票系统的程序算法?
  16. Android,保存图片并通知系统更新相册
  17. C语言随机产生26个大写字母
  18. 关于物联网卡流量统计的那些事儿
  19. 开源的高性能Java集合:GNU Trove介绍
  20. 很好用的程序员在线画图软件

热门文章

  1. BiSeNet:用于实时语义分割的双边分割网络-7min精简论文阅读系列-Leon
  2. 5个理由,你值得拥有电子实验记录本(ELN)
  3. HTML在指定位置画一个矩形,CAD如何在指定位置绘制矩形?
  4. POE直流供电后段整流电路(含网络变压器供电)示意图
  5. 解谜2019文娱产业,猫眼的互联网升级方法论
  6. Shader Graph 小草顶点动画
  7. ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 A. Visiting Peking University
  8. 要跑步,选对鞋!给新手的跑步鞋指南
  9. Makefile 读书笔记
  10. Java类和对象小结