【笔记】随机森林和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~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...
随机推荐
- 暑假自学java第五天
关于测试类的问题: 单独创建一个包存放测试类,如com.test 首先要构建路径添加测试类的相关类库,方法是项目右键,buld path->config buld path->librar ...
- docker进入容器所在虚拟机的指令
sudo docker inspect -f {{.State.Pid}} 44fc0f0582d9 在拿到该进程PID之后我们就可以使用nsenter命令访问该容器了. $ sudo nsenter ...
- 深入理解索引和AVL树、B-树、B+树的关系
目录 什么是索引 索引的分类 索引和AVL树.B-树.B+树的关系 AVL树.红黑树 B-树 B+树 SQL和NoSQL索引 什么是索引 索引时数据库的一种数据结构,数据库与索引的关系可以看作书籍和目 ...
- shell脚本(2)-shell脚本语法
一.如何抒写shell脚本 1.shell脚本的命名 名字要有意义,不要以a.b.c.1.2.3这种方式命令,建议以sh结尾,在30个字节内,例如:check_memory.sh 2.shell脚本 ...
- DEV C++ CPU窗口
push rbp#push实现压入操作的指令,将指定内存地址或操作数压入堆栈(先进后出)mov rbp,rsp# 将rsp所保存的地址或操作数送到目的操作数rbp(修改rbp内容)sub rsp,0x ...
- Linux从入门到进阶全集——【第十四集:Shell编程-export命令】
参考: https://www.cnblogs.com/guojun-junguo/p/9855356.html 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量 ...
- bash对一个目录中文件名的遍历
for var in * 对当前目录中文件名的遍历 for var in /xx/xx/* 对绝对路径目录的遍历 ${var##*/} 变量扩展取文件名的基名 $var =~ ^[0-9] ...
- React refs 的理解
一.是什么 Refs 在计算机中称为弹性文件系统(英语:Resilient File System,简称ReFS) React 中的 Refs提供了一种方式,允许我们访问 DOM节点或在 render ...
- 安装geatpy库到指定的conda虚拟环境中
在Anaconda Prompt中输入conda install geatpy,提示找不到这个库: 输入pip install geatpy,安装成功:但是安装在默认conda环境下(以下为pycha ...
- 🔥 LeetCode 热题 HOT 100(21-30)
46. 全排列 思路:典型回溯法 class Solution { public List<List<Integer>> permute(int[] nums) { Linke ...