随机森林

  • 一、什么是随机森林
  • 二、原理过程
  • 三、BootStrap抽样
  • 四、API

一、什么是随机森林

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。
例如, 如果你训练了5个树, 其中有4个树的结果是True, 1个数的结果是False, 那么最终投票结果就是True

二、原理过程

学习算法根据下列算法而建造每棵树:

  • 用N来表示训练用例(样本)的个数,M表示特征数目。
    1、一次随机选出一个样本,重复N次(有可能出现重复的样本)
    2、随机去选出m个特征, m <<M,建立决策树
  • 采取bootstrap抽样

三、BootStrap抽样

抽样是指从一个样本数据集中随机抽取一些样本,形成新的数据集。这里有两种选择:有放回抽样和无放回抽样。Bootstrap使用的是有放回抽样。

1,为什么要随机抽样训练集?
如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的。

2,为什么要有放回地抽样?
如果不是有放回的抽样,那么每棵树的训练样本都是不同的,也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决。

四、API

# n_estimators:integer,默认 10)森林里的树木数量
# criteria:string,可选(default =“gini”)分割特征的测量方法
# max_depth:integer或None,可选(默认=无)树的最大深度
"""
max_features="auto”,每个决策树的最大特征数量
Auto/None:简单地选取所有特征,每颗树都可以利用他们。这种情况下,每颗树都没有任何的限制。
sqrt:此选项是每颗子树可以利用总特征数的平方根个。 例如,如果变量(特征)的总数是100,所以每颗子树只能取其中的10个。
log2:另一种和 sqrt 相似类型的选项。
"""
# bootstrap:boolean,(默认 True)是否在构建树时使用放回抽样
# min_samples_split:节点划分最少样本数
# min_samples_leaf:叶子节点的最小样本数
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)

其中,n_estimator, max_depth, min_samples_split,min_samples_leaf 是超参数,以下是随机森林的超参数的代码演示

# 随机森林去进行预测
rf = RandomForestClassifier()
param = {"n_estimators": [120,200,300,500,800,1200], "max_depth": [5, 8, 15, 25, 30]}# 超参数调优
gc = GridSearchCV(rf, param_grid=param, cv=2)
gc.fit(x_train, y_train)print("随机森林预测的准确率为:", gc.score(x_test, y_test))

day08——随机森林相关推荐

  1. 利用mysql建立随机森林_随机森林算法实例 - osc_4imme0wh的个人空间 - OSCHINA - 中文开源技术交流社区...

    根据成年人数据集来预测一个人的收入 1.准备数据集 我下载好了一个成年人数据集,从百度云下载 链接:https://pan.baidu.com/s/10gC8U0tyh1ERxLhtY8i0bQ 提取 ...

  2. 机器学习(10)随机森林(预测泰坦尼克号旅客存活率)

    目录 一.基础理论 1.集成学习方法 2.随机森林 API 二.过程 1.创建随机森林预估器 2.参数准备(网格搜索) 3.训练 模型评估结果: 总代码 一.基础理论 1.集成学习方法 集成学习通过建 ...

  3. 随机森林 java_机器学习weka,java api调用随机森林及保存模型

    工作需要,了解了一下weka的java api,主要是随机森林这一块,刚开始学习,记录下. 了解不多,直接上demo,里面有一些注释说明: package weka; import java.io.F ...

  4. 机器学习数据拆分_解释了关键的机器学习概念-数据集拆分和随机森林

    机器学习数据拆分 数据集分割 (Dataset Splitting) Splitting up into Training, Cross Validation, and Test sets are c ...

  5. 哪个才是解决回归问题的最佳算法?线性回归、神经网络还是随机森林?

    编译 | AI科技大本营 参与 | 王珂凝 编辑 | 明 明 [AI科技大本营导读]现在,不管想解决什么类型的机器学习(ML)问题,都会有各种不同的算法可以供你选择.尽管在一定程度上,一种算法并不能总 ...

  6. kaggle项目:基于随机森林模型的心脏病患者预测分类!

    公众号:尤而小屋 作者:Peter 编辑:Peter 大家好,我是Peter~ 新年的第一个项目实践~给大家分享一个新的kaggle案例:基于随机森林模型(RandomForest)的心脏病人预测分类 ...

  7. 最喜欢随机森林?周志华团队 DF21 后,TensorFlow 开源决策森林库 TF-DF

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自 | 机器之心 TensorFlow 决策森林 (TF-DF) ...

  8. Facebook工程师教你什么是随机森林,就算零基础也可以看懂 | 干货

    白交 发自 凹非寺  量子位 报道 | 公众号 QbitAI 今天的这篇入门贴,我们就来介绍一下决策树与随机森林. 这篇帖子适合机器学习基础为0的同学~ 当然,有基础的同学也可以来看一下,加深一下理解 ...

  9. Bagging与随机森林算法原理小结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boos ...

最新文章

  1. AI 的十种 “新数学”
  2. 【2020/6/24整理版】利用csi tool获取csi数据并进行数据解析----适合初学的小白
  3. 线程的简单生产消费模式
  4. jQuery中的text()、html()和val()以及innerText、innerHTML和value
  5. UVa 1347 旅行
  6. oracle 表名拼接_Oracle之3种表连接方式(排序合并连接、嵌套循环、哈希连接)...
  7. Linux的timerfd分析
  8. Java字符字符串类
  9. Visual C++ 2010 新特性:并行计算
  10. 代码也浪漫——Python烟花秀
  11. 拓端tecdat|R语言使用马尔可夫链Markov Chain, MC来模拟抵押违约
  12. Linux系统内核升级
  13. leetcode1-5
  14. 2019重庆大学计算机学院研究生,【计算机】计算机学院举行2019级研究生年级大会...
  15. 【电力系统】基于凸松弛算法的电力市场策略(Matlab代码实现)
  16. linux wine 使用教程,Wine 使用技巧两则
  17. 各种activation function(激活函数) 简介
  18. 【印刷行业】RICOH MH5320和MH5340喷头(G6)
  19. quartus仿真26:D触发器实现的四位移位寄存器
  20. 设置input 不可编辑的方法

热门文章

  1. 中创09校园招聘试题
  2. Python数据分析教程01:jupyter的使用及numpy要点总结
  3. [python爬虫]--爬取豆瓣音乐topX
  4. 保监会暂停审批区域保险代理车险
  5. Splinter使用中遇到的问题集锦
  6. TypeError: cannot pickle ‘module‘ object
  7. matlab画转体_MATLAB旋转体的绘制
  8. 算法设计与分析——页码问题
  9. 为什么大数据会如此轰动?
  10. (int)a是什么意思