前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 mlxtend 堆浅泛化:预测 NBA MVP

使用 mlxtend 堆浅泛化:预测 NBA MVP

作者头像
AI研习社
发布于 2019-07-23 07:35:58
发布于 2019-07-23 07:35:58
93400
代码可运行
举报
文章被收录于专栏:AI研习社AI研习社
运行总次数:0
代码可运行

原标题 | Stacked generalization with mlxtend: Predicting the NBA MVP 作者 | Steven Liu 译者 | 汪鹏(重庆邮电大学) 注:本文的相关链接请访问文末【阅读原文】

堆栈泛化: 基础知识

堆栈是一种集成学习技术,通过结合几个更简单模型的优势,构建更具预测性的模型。中心思想是训练几个不同的基础模型,然后将这些预测作为最终元学习者的输入。换句话说,取每个1级模型学习的内容,然后创建一个比任何一个模型更具预测性的新广义学习者(2级模型)。

堆栈泛化的例子

当我们创建这些堆叠的集合时,选择各种各样的1级模型非常重要,因为我们希望每个模型都添加尚未学习的信息。每个模型都应该为最终的元学习者贡献一些价值。因此,避免模型只是彼此的变化,否则我们只会添加冗余。

堆叠模型通常用于Kaggle比赛,并且非常适合团队,每个团队成员可以将他们的模型堆叠在一起。

只要记住要考虑准确性和可解释性/努力之间的权衡是否值得。一些堆叠的模型可能变得非常大。例如,Netflix第一次电影评级预测竞赛的成功解决方案涉及107个算法和200多个小时的工作!这是一个如此复杂的模型,Netflix最终决定额外的准确性增益不值得将模型投入生产所需的工程努力。

mlxtend

有很多方法可以创建堆叠模型,但在我看来,最简单的方法是从mlxtend开始,这是一个允许我们快速组装堆叠回归器的库。

在这个例子中(以及NBA季后赛的精神!),我们将尝试预测2018-2019赛季的MVP。数据集可以从Kaggle下载,它包含两个文件:

  • mvp_votings代表我们的训练集,并且具有从1980-81赛季开始的历史数据。这是媒体开始对联盟MVP投票的时候。目标是award_share,即球员获得MVP头衔的投票份额。
  • test_data来自当前赛季胜利贡献值前40名的球员,这个指标可以估算个人球员对球队的贡献。

开始入门

训练集共有637条数据。在读入并清理了一些数据之后,这就是数据帧的样子:

历史赛季的NBA统计数据

下一步是数据预处理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# create feature and target variable    
X = df1.drop(columns='award_share')    
y = df1['award_share']

# standardize features    
from sklearn.preprocessing import StandardScaler    
X = StandardScaler().fit_transform(X)

数据标准化非常重要,因为存在具有显着不同大小的值,并且我们不希望任何一个特征支配目标函数。使用StandardScaler功能,我们可以:

  • 通过减去每个要素中的平均值来使数据适中。
  • 按标准偏差缩放每个要素。

单一随机森林回归

为了比较单个模型与堆叠回归量的性能,我们训练了随机森林回归模型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# train with a single model    
from sklearn.ensemble import RandomForestRegressor
    
random_forest = RandomForestRegressor(n_estimators=500, max_depth=3)    
random_forest.fit(X, y)    
random_forest.score(X, y)

随机森林模型产生0.65的准确度分数。让我们看看堆叠回归器的表现如何。

堆栈回归

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# train with stacked model
from sklearn.linear_model import LinearRegression
from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import LinearSVR
from sklearn.neural_network import MLPRegressor
from mlxtend.regressor import StackingRegressor

# initialize first layer of models and final learner
regr = StackingRegressor(regressors=[KNeighborsRegressor(),
                                     LinearRegression(),
                                     LinearSVR(),
                                     MLPRegressor()],
                         meta_regressor=RandomForestRegressor(n_estimators=500, max_depth=3))

# fit on data
regr.fit(X, y)

# get accuracy score
regr.score(X, y)

创建堆栈回归器非常简单:

  1. 从mlextend初始化StackingRegressor。
  2. 使用多个基本模型填充StackingRegressor。
  3. 指定用于元回归量(或最终学习者)的模型。

就是这样!从这里开始,您可以像平常一样使用scikit-learn模型进行拟合和预测。堆叠回归器的精度得分为0.84,与单一型号相比,精度提高了22%!

您可能还注意到我们没有在堆叠回归量中指定任何超参数,但是mlextend允许我们调整基本和元模型中的超参数。

要获取所有可调参数的列表,请调用estimator.get_params().keys()以查找支持的内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# tune hyperparameters
from sklearn.model_selection import RandomizedSearchCV

knn = KNeighborsRegressor()
rf = RandomForestRegressor()
mlp = MLPRegressor()

params = {'kneighborsregressor__n_neighbors':[5, 7, 9],
          'mlpregressor__solver':['sgd', 'adam'],
          'meta-randomforestregressor__n_estimators':[200, 500, 1000]}

grid = RandomizedSearchCV(estimator=regr,
                          param_distributions=params,
                          cv=5,
                          refit=True)

grid.fit(X, y)

然后我们可以调用grid.best_params_来返回最佳的超参数集以进行训练。

谁会是2018-2019赛季的MVP?

现在已经调整了叠加回归量,让我们预测谁将赢得MVP,并将其与NBA自己的预测进行比较。

字母哥是全场最受欢迎的球员,他赢得了MVP,而且击败了哈登!

哈登(左)与字母哥(右)

来自我们堆叠回归的一些值得注意的内容,包括Rudy Gobert,Steven Adams,Andre Drummond和Nikola Vucevic,他们都不是真正的MVP级别球员。我们可以看到,在Giannis和Harden之后,预测的award_share在第10名玩家中迅速衰减至0.18。

为了了解我们的堆叠模型的精确程度,您必须在2019年NBA奖项揭晓后后的6月24日回来查看谁真正赢得了MVP冠军。决赛选手被命名为:Giannis,Harden和Paul George(我们的模型中排名第五)。但事实上,毫无疑问,MVP将会给Giannis或Harden,他们每个人都有一个令人难以置信的赛季。

就我个人而言,我将支持Giannis(字母哥)在进攻和防守方面成为如此具有统治力的最高荣誉,同时在如此年轻的时候带领雄鹿队成为联盟的佼佼者。

感谢阅读,并随时发表评论或留下你可能有的任何反馈——包括你认为这届NBA的MVP应该是谁。

本文编辑:王立鱼

英语原文:https://heartbeat.fritz.ai/stacked-generalization-with-mlxtend-predicting-the-nba-mvp-fc5171daac60

想要继续查看该篇文章相关链接和参考文献?

点击底部【阅读原文】即可访问:

https://ai.yanxishe.com/page/TextTranslation/1779

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于xgboost+GridSearchCV的波士顿房价预测
2018年8月23日笔记 sklearn官方英文用户使用指南:https://sklearn.org/user_guide.html sklearn翻译中文用户使用指南:http://sklearn.apachecn.org/cn/0.19.0/user_guide.html
潇洒坤
2018/09/10
4K0
基于xgboost+GridSearchCV的波士顿房价预测
通过KNN算法预测数据所属NBA球员——Python实现
通过得分,篮板,助攻,出场时间四个数据来预测属于哪位球员。 选取了'LeBron James','Chris Paul','James Harden','Kevin Love','Dwight Howard'五位球员单场数据。
Awesome_Tang
2018/09/11
7330
通过KNN算法预测数据所属NBA球员——Python实现
实战|用决策树实现NBA获胜预测
因为疫情原因导致NBA2019-2020赛季没有进行完,所以我们使用NBA2018-2019赛季的数据进行预测,数据获取方式有下面两种:
数据山谷
2020/07/21
3.1K0
实战|用决策树实现NBA获胜预测
Python机器学习之项目实践 | 赠书
文章节选自《机器学习——Python实践》 文末评论赠送本书,欢迎留言! 机器学习是一项经验技能,经验越多越好。在项目建立的过程中,实践是掌握机器学习的最佳手段。在实践过程中,通过实际操作加深对分类和回归问题的每一个步骤的理解,达到学习机器学习的目的。 预测模型项目模板 不能只通过阅读来掌握机器学习的技能,需要进行大量的练习。本文将介绍一个通用的机器学习的项目模板,创建这个模板总共有六个步骤。通过本文将学到: 端到端地预测(分类与回归)模型的项目结构。 如何将前面学到的内容引入到项目中。 如何通过这个项目模
用户1737318
2018/06/05
6000
如何为回归问题选择最合适的机器学习方法?
在目前的机器学习领域中,最常见的三种任务就是:回归分析、分类分析、聚类分析。在之前的文章中,我曾写过一篇《15分钟带你入门sklearn与机器学习——分类算法篇》。
AI科技大本营
2019/05/14
7700
机器学习测试笔记(29)——找到最佳模型及参数
https://item.m.jd.com/product/10023427978355.html
顾翔
2021/03/03
4840
机器学习测试笔记(28)——管道技术
https://item.m.jd.com/product/10023427978355.html
顾翔
2021/03/03
7550
机器学习测试笔记(28)——管道技术
用4种回归方法绘制预测结果图表:向量回归、随机森林回归、线性回归、K-最近邻回归
链接: https://pan.baidu.com/s/1qa99ntHsozgqB2xliVYd7A 提取码: sp9h –来自百度网盘超级会员v6的分享
全栈若城
2024/02/29
4260
用4种回归方法绘制预测结果图表:向量回归、随机森林回归、线性回归、K-最近邻回归
入门 | 如何为你的回归问题选择最合适的机器学习方法?
在目前的机器学习领域中,最常见的三种任务就是:回归分析、分类分析、聚类分析。在之前的文章中,我曾写过一篇<15分钟带你入门sklearn与机器学习——分类算法篇>。那么什么是回归呢?回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。回归分析在机器学习领域应用非常广泛,例如,商品的销量预测问题,交通流量预测问题。那么,如何为这些回归问题选择最合适的机器学习算法呢?这篇文章将从以下一个方面介绍:
小小詹同学
2019/05/05
6520
[Hands On ML] 2. 一个完整的机器学习项目(加州房价预测)
范数的指数越高,就越关注大的值而忽略小的值。这就是为什么 RMSE 比 MAE 对异常值更敏感。但是当异常值是指数分布的(类似正态曲线),RMSE 就会表现很好。
Michael阿明
2020/07/13
2.5K0
[Hands On ML] 2. 一个完整的机器学习项目(加州房价预测)
sklearn 机器学习 Pipeline 模板
使用 sklearn 的 pipeline 搭建机器学习的流程 本文例子为 [Kesci] 新人赛 · 员工满意度预测 参考 [Hands On ML] 2. 一个完整的机器学习项目(加州房价预测)
Michael阿明
2021/02/19
5110
《Scikit-Learn与TensorFlow机器学习实用指南》 第02章 一个完整的机器学习项目(下)选择并训练模型模型微调启动、监控、维护系统实践!练习
大多机器学习算法不能处理特征丢失,因此先创建一些函数来处理特征丢失的问题。前面,你应该注意到了属性total_bedrooms有一些缺失值。有三个解决选项:
SeanCheney
2018/09/19
1.2K0
常用机器学习代码汇总
皮大大
2023/08/25
4400
1.6w字超全汇总!56个sklearn核心操作!!!
其中,X是特征数据,y是目标数据,test_size是测试集的比例(可以是0到1之间的值),random_state是随机种子,用于保证每次划分的结果一致。
Python编程爱好者
2024/05/13
4550
1.6w字超全汇总!56个sklearn核心操作!!!
机器学习分类模型决策边界,MLxtend轻松绘制!
https://rasbt.github.io/mlxtend/user_guide/classifier/LogisticRegression/
皮大大
2024/07/12
4150
【Python环境】R vs Python:硬碰硬的数据分析
我们将在已有的数十篇从主观角度对比Python和R的文章中加入自己的观点,但是这篇文章旨在更客观地看待这两门语言。我们会平行使用Python和R分析一个数据集,展示两种语言在实现相同结果时需要使用什么样的代码。这让我们了解每种语言的优缺点,而不是猜想。在Dataquest,我们教授两种语言,并认为两者在数据科学工具箱中都占据各自的地位。 我们将会分析一个NBA数据集,包含运动员和他们在2013-2014赛季的表现,可以在这里下载这个数据集。我们展示Python和R的代码,同时做出一些解释和讨论。事不宜
陆勤_数据人网
2018/02/26
1.6K0
【Python环境】R vs Python:硬碰硬的数据分析
机器学习测试笔记(22)——综合_散点图
注:由于'AgglomerativeClustering'和'DBSCAN'画边界非常慢,一般情况下可不做不边界,放入self.no_bord_list中,要用的时候取出来。
顾翔
2021/01/28
3080
快速入门Python机器学习(35)
这个转换器的输入应该是一个类似整数或字符串的数组,表示由分类(离散)特征获取的值。这些特征使用one-hot(也称为'one-of-K'或'dummy')编码方案进行编码。这将为每个类别创建一个二进制列,并返回稀疏矩阵或密集数组(取决于稀疏参数)
顾翔
2022/09/23
6150
快速入门Python机器学习(35)
Python地铁站点客流量预测:随机森林极限梯度提升回归器XGBoost|数据分享
本文将通过展示地铁站点客流量预测,并结合一个Python随机森林极限梯度提升回归器XGB实例的代码数据,为读者提供一套完整的实践数据分析流程。 然而,由于地铁系统复杂性以及乘客行为的不确定性,地铁客流量预测一直是一个挑战性的问题。 存在的问题:
拓端
2024/08/12
4380
Python地铁站点客流量预测:随机森林极限梯度提升回归器XGBoost|数据分享
重磅|如何利用NBA球员推文预测其球场表现?
本文已获论文原作者授权,转载请后台留言申请 原文作者: Yang Yu (余旸)- Rochester Institute of Technology (罗切斯特理工大学) Chenyan Xu (许辰燕)- Stockton University (斯托克顿大学) Chun-Keung Hoi - Rochester Institute of Technology(罗切斯特理工大学) 翻译及案例应用:王昱森 吴怡雯 校对:魏子敏 ◆ ◆ ◆ 导读 从1-3落后,到4-3夺冠, NBA总决赛历史上
大数据文摘
2018/05/22
1.3K0
推荐阅读
相关推荐
基于xgboost+GridSearchCV的波士顿房价预测
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验