【笔记】随机森林和Extra-Trees
随机森林和Extra-Trees
随机森林
先前说了bagging的方法,其中使用的算法都是决策树算法,对于这样的模型,因为具有很多棵树,而且具备了随机性,那么就可以称为随机森林
在sklearn中封装了随机森林的类,可以使用这个类直接创建出一个随机森林,同时sklearn中的随机森林模型的随机性更为复杂,对于决策树来说,都是对每一个节点进行划分,详情看这里
在sklearn中的封装的随机森林默认在每一个节点上,都是在一个随机的特征子集上寻找一个最优的划分,并不是在节点上对所有的特征进行划分,这就增加了每一个子模型的随机性
具体使用
(在notebook中)
加载好需要的类库,虚拟数据的随机种子设置为666,绘制图像
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
X,y = datasets.make_moons(n_samples=500,noise=0.3,random_state=666)
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
图像如下

使用sklearn提供的随机模型只要调用RandomForestClassifier这个类就可以,然后实例化,传入参数,设置样本点为500,随机种子为666,使用全部核心并行,并使用未使用的样本点进行测试计算准确度,然后进行训练,计算准确度
from sklearn.ensemble import RandomForestClassifier
rf_clf = RandomForestClassifier(n_estimators=500,random_state=666,oob_score=True,n_jobs=-1)
rf_clf.fit(X,y)
rf_clf.oob_score_
结果如下

新添加一个参数进行实例化,传入参数max_leaf_nodes,限制每一个决策树的叶子节点,设置为16,然后训练并计算样本的准确度
rf_clf2 = RandomForestClassifier(n_estimators=500,max_leaf_nodes=16,random_state=666,oob_score=True,n_jobs=-1)
rf_clf2.fit(X,y)
rf_clf2.oob_score_
结果如下

可以不断调参以获得更好的准确度,这里不难发现,随机森林的参数是可以使用决策树的参数的
Extra trees
和随机森林非常类似的还有Extra trees,极其随机的森林,其极其的随机性表现在,在节点划分上,直接使用随机的特征和随机的阈值,可以想象,这每棵树的差别会更加的大,很随机,这种方式提供了额外的随机性,而且抑制了过拟合(方差),但是这样的操作增大了bias(偏差),所以要看问题本身是不是适合使用这种方法
这个方法比起随机森林而言,有着更快的训练速度,在sklearn中使用也很简单,调用ExtraTreesClassifier这个类就可以了,使用的参数也和RandomForestClassifier一样,需要注意的是,bootsreap默认是flase,所以要使用放回取样还需要设置为true,然后训练并计算准确度
from sklearn.ensemble import ExtraTreesClassifier
et_clf = ExtraTreesClassifier(n_estimators=500,bootstrap=True,oob_score=True,random_state=666)
et_clf.fit(X,y)
et_clf.oob_score_
结果如下

添加一个新的参数,添加max_leaf_nodes=,设置为16,然后训练模型并计算准确度
et_clf2 = ExtraTreesClassifier(n_estimators=500,max_leaf_nodes=16,bootstrap=True,oob_score=True,random_state=666)
et_clf2.fit(X,y)
et_clf2.oob_score_
结果如下

其实集成学习也可以解决回归问题,在sklearn中可以使用很多类来解决,比如baggingregressor,randomforestregressor,extratreesregressor等类,使用方式和上面大致一样,不过因为解决的是回归问题,所以输出结果是一个数字

【笔记】随机森林和Extra-Trees的更多相关文章
- Python机器学习笔记——随机森林算法
随机森林算法的理论知识 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为“代 ...
- 笔记+R︱风控模型中变量粗筛(随机森林party包)+细筛(woe包)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 本内容来源于CDA-DSC课程内容,原内容为& ...
- [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest)
[ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest) 决策树 决策树算法以树状结构表示数据分类的结果.每个决策点实现一个具有离散输出的测试函数,记为分支 ...
- Machine Learning笔记整理 ------ (五)决策树、随机森林
1. 决策树 一般的,一棵决策树包含一个根结点.若干内部结点和若干叶子结点,叶子节点对应决策结果,其他每个结点对应一个属性测试,每个结点包含的样本集合根据属性测试结果被划分到子结点中,而根结点包含样本 ...
- 【R语言学习笔记】 Day1 CART 逻辑回归、分类树以及随机森林的应用及对比
1. 目的:根据人口普查数据来预测收入(预测每个个体年收入是否超过$50,000) 2. 数据来源:1994年美国人口普查数据,数据中共含31978个观测值,每个观测值代表一个个体 3. 变量介绍: ...
- 机器学习之Bagging与随机森林笔记
集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能.这对“弱学习器”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器.虽然从理论上来 ...
- scikit-learn随机森林调参小结
在Bagging与随机森林算法原理小结中,我们对随机森林(Random Forest, 以下简称RF)的原理做了总结.本文就从实践的角度对RF做一个总结.重点讲述scikit-learn中RF的调参注 ...
- Bagging与随机森林算法原理小结
在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...
- R语言︱决策树族——随机森林算法
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...
随机推荐
- 面试题五:Spring
Spring IoC 什么是IoC? 容器创建Bean对象,将他们装配在一起,配置并且管理它们的完整生命周期. Spring容器使用依赖注入来管理组成应用程序的Bean对象: 容器通过提供的配置元数据 ...
- redis集群搭建中遇到的一些问题
redis单机模式启动后,修改完配置文件,使用以下命令创建redis集群: sudo ./src/redis-trib.rb create --replicas 1 ip1:6379 ip2:6379 ...
- PHP7与php5
php在2015年12月03日发布了7.0正式版,带来了许多新的特性,以下是不完全列表: 性能提升:PHP7比PHP5.6性能提升了两倍. Improved performance: PHP 7 is ...
- python3.7验证码识别MuggleOCR,为什么总是报错
先来看看MuggleOCR简介(白嫖)这是一个为麻瓜设计的本地OCR模块只需要简单几步操作即可拥有两大通用识别模块,让你在工作中畅通无阻. 这套模型是基于 https://github.com/ker ...
- git常用命令自己梳理总结
一.新建代码库 # git-init - 创建一个空的 Git 存储库或重新初始化一个现有的存储库 $ git init # 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一 ...
- python 列表指导式
>>> a=[page for page in range(10)]>>> print (a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>& ...
- [008] - JavaSE面试题(八):集合
第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [008] - JavaSE面试题(八):集合 第1问:说一下集合的体系? 单列集合: 双列集合: ...
- dart pub上传失败如何解决
问题: Flutter Exception: Pub will wait for a while before trying to connect again. 解决 1.设置终端代理 export ...
- 用Nextcloud在树莓派上布置你的个人网盘“NAS”
用Nextcloud在树莓派上布置你的个人网盘"NAS" 这次用的是目前最新的 Raspbian Stretch 系统,基于 Debian 9. 软件程序是 Nextcloud 1 ...
- P5591 小猪佩奇学数学
P5591 小猪佩奇学数学 知识点 二项式定理 \[(x+1)^n=\sum_{i=0}^n\binom nix^i \] 单位根反演 \[[n\mid k]=\frac 1n\sum_{i=0}^{ ...