python在Scikit-learn中用决策树和随机森林预测NBA获胜者

news/2024/10/3 21:25:46

原文链接:http://tecdat.cn/?p=5222

原文出处:拓端数据部落公众号

 

在本文中,我们将以Scikit-learn的决策树和随机森林预测NBA获胜者。美国国家篮球协会(NBA)是北美主要的男子职业篮球联赛,被广泛认为是首屈一指的男子职业篮球联赛在世界上。它有30个队(美国29个,加拿大1个)。

在 常规赛期间,每支球队打82场比赛,每场41场。一支球队每年会有四次面对对手(16场比赛)。每个小组在其四次(24场比赛)中的其他两个小组中的六个小组中进行比赛,其余四个小组三次(12场)进行比赛。最后,每个队都会在另一场比赛中两次参加所有的球队(30场比赛)。

用决策树和随机森林预测NBA获胜者

 
 

#导入数据集并解析日期
df = pd.read_csv("NBA_regularGames.csv",parse_dates=["Date"])

从描述中,我们可以计算概率。在每场比赛中,主队和客队都有一半概率赢得比赛。

预测类

在下面的代码中,我们将指定我们的分类。这将帮助我们查看决策树分类的预测是否正确。如果主队获胜,我们将指定我们的等级为1,如果访客队在另一个名为“主队赢”的列中获胜,我们将指定为0。

 
 
df["Home Team Win"] = df["Visitor Points"] < df["Home Points"] 

主队胜率:58.4%

数组现在拥有scikit-learn可以读取的格式。

特征工程

我们将创建以下功能来帮助我们预测NBA的获胜者。

无论是来访者还是主队都赢得了最后一场比赛。

哪个队更好?

scikit-learn软件包实现CART(分类和回归树)算法作为其默认 决策树类

决策树实现提供了一种方法来停止构建树,以防止过度拟合:

•min_samples_split:可以创建任意叶子,以便在决策树中创建一个新节点。

•min_samples_leaf:保证从节点得到的叶子中的样本数量最少

建议使用min_samples_split或min_samples_leaf来控制叶节点处的采样数。非常小的数字通常意味着树将过度拟合,而大的数据将阻止树学习。

决策的另一个参数是创建决策的标准。基尼的不纯和信息收益是两种流行的:

•基尼:测量决策节点错误预测样本类别的频率

•信息增益:指示决策节点获得了多少额外信息

函数选择

我们通过指定我们希望使用的列并使用数据框视图的values参数,从数据集中提取要素以与我们的scikit-learn的DecisionTreeClassifier一起使用。我们使用cross_val_score函数来测试结果。

 
 
X_features_only = df [[ 'Home Win Streak' ,'Visitor Win Streak' ,'Home Team Ranks Higher' ,'Home Team Won Last' ,'Home Last Win' ,'Visitor Last Win' ]]

结果准确性:56.0%

有可能通过添加更多参数来提高准确性。

混淆矩阵显示了我们决策树的正确和不正确的分类。对角线1,295分别表示主队的真正获胜与否。左下角的1表示假阴性的数量。而右上角的195,误报的数量。我们也可以查看大约0.602的准确性分数,这表明决策树模型已经将60.2%的样本正确地归类为主队获胜与否。

导入pydotplus 图

出于探索的目的,较少数量的变量对获得决策树输出的理解会很有帮助。我们的第一个解释变量,主队获胜概率更高。如果主队排名低于4.5,那么主队输的概率更高。

如有任何问题、意见,请留言咨询

 


最受欢迎的见解

1.从决策树模型看员工为什么离职

2.R语言基于树的方法:决策树,随机森林

3.python中使用scikit-learn和pandas决策树

4.机器学习:在SAS中运行随机森林数据分析报告

5.R语言用随机森林和文本挖掘提高航空公司客户满意度

6.机器学习助推快时尚精准销售时间序列

7.用机器学习识别不断变化的股市状况——隐马尔可夫模型的应用

8.python机器学习:推荐系统实现(以矩阵分解来协同过滤)

9.python中用pytorch机器学习分类预测银行客户流失

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【Azure Function】Azure Function中的Timer Trigger无法自动触发问题

问题描述 在Azure Function中,部署了定时触发器函数(Timer Trigger),却无法按时触发。问题解答 登录Function的Kudu站点,查看 logfiles中 application/function/host目录下的日志文件,发现错误消息:Singleton lock renewal failed for blob xxxxxxxxxxxxxxxxxxxxxxxxxxxxx…

ESP32-C6测评-环境安装

import time from machine import Pinled=Pin(15,Pin.OUT)while True:led.value(1)time.sleep(0.01)led.value(0)time.sleep(0.3)

国产持续集成工具 - Gokins

国产持续集成工具 - Gokins 持续集成(Continuous Integration ,CI) 介绍 在传统软件开发过程中,集成通常发生在每个人都完成了各自的工作之后。在项目尾声阶段,通常集成还要痛苦的花费数周或者数月的时间来完成。持续集成是一个将集成提前至开发周期的早期阶段的实践方式,…

HelloWorld

随便建造一个文件夹,存放代码。 建造一个Java文件文件后缀名为.Java Hello.java 【要注意】系统可能没有显示文件名后缀,我们需要手动打开3.编写代码public class Hello{public static void main(String[] args){System.out.print("Hello,World!"); } } 编译 javac…

2024 FIC取证比赛wp

本次竞赛容器挂载密码为: 2024Fic@杭州Powered~by~HL!2024年4月,卢某报案至警方,声称自己疑似遭受了“杀猪盘”诈骗,大量钱财被骗走。卢某透露,在与某公司交流过程中结识了员工李某。李某私下诱导卢某参与赌博游戏,起初资金出入均属正常。但随后,李某称赌博平台为提升安…

[Cmake Qt]找不到文件ui_xx.h的问题?有关Qt工程的问题,看这篇文章就行了。

前言 最近在开发一个组件,但是这个东西是以dll的形式发布的界面库,所以在开发的时候就需要上层调用。如果你是很懂CMake的话,ui_xx.h的文件目录在$下 然后除了有关这个ui_xx.h,还有一些别的可以简单聊聊的 一、父子工程组织,或者说依赖关系 在使用CMake进行开发的时候,一…

Linux之手把手教会修改网卡名称【转载】

一、为什么要修改网卡名称在早期的linux系统中,网卡名称常常以传统的命名方式eth0、eth1、eth2来命名。 例如,CentOS 6之前,网络接口使用连续号码命名:eth0、eth1等,但是,如果再新增硬件设备,也有可能会被识别成 eth0,eth1等。 CentOS 7开始,改变了网卡设备命名规则,…