机器学习基础之《分类算法(8)—随机森林》

news2024/12/28 19:07:54

一、什么是集成学习方法

1、定义
集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测
谚语:三个臭皮匠顶个诸葛亮、众人拾柴火焰高

二、什么是随机森林

1、定义
在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定

森林:包含多个决策树的分类器

2、什么是众数
例如,如果你训练了5个树,其中有4个树的结果是True,1个数的结果是False,那么最终投票结果就是True

三、随机森林原理过程

1、如何随机
我们都是根据特征值和目标值进行预测的
我们面临的训练集是一致的,如何对同样的训练集去产生多棵树呢

两个随机:
  训练集随机
  特征随机

训练集:有N个样本,M个特征
  
2、训练集随机
bootstrap:随机有放回抽样
例子:[1, 2, 3, 4, 5]
新的树的训练集:
[2, 2, 3, 1, 5],先抽到2,把2放回去,可能又抽到2,把2放回去,抽到3,把2放回去。。。以此类推
从N个样本中随机有放回的抽样N个

3、特征随机
从M个特征中随机抽取m个特征
M >> m

4、算法归纳
训练集:有N个样本,M个特征
(1)从N个样本中随机有放回的抽样N个
(2)从M个特征中随机抽取m个特征,并且M 要远远大于 m
(3)M >> m,起到了降维的作用

5、为什么要这样做
因为笨的树都在乱蒙,聪明的树结果总是相同,最终会实现投票的众数结果是相对正确的

四、API

1、class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
随机森林分类器
n_estimators:设定要选几颗树,可选,默认=10,森林里的树木数量 120,200,300,500,800,1200
criterion:划分决策树的依据,可选,默认='gini'(基尼系数)
max_depth:树的深度,可选,默认=None 5,8,15,25,30
bootstrap:可选,默认=True,是否在构建树时使用放回抽样
max_features;默认=auto,每个决策树的最大特征数量,从M个特征中选择m个特征
  If "auto", then max_features=sqrt(n_features).
  If "sqrt", then max_features=sqrt(n_features) (same as "auto").
  If "log2", then max_features=log2(n_features).
  If None, then max_features=n_features.
min_samples_split:节点划分最少样本数
min_samples_leaf:叶子节点的最小样本数

五、随机森林预测案例

1、代码
在前一篇决策树的代码后面加上:

# 随机森林对泰坦尼克号乘客的生存进行预测

from sklearn.ensemble import RandomForestClassifier

# 实例化,和决策树用相同的参数
estimator = RandomForestClassifier(criterion='entropy',max_depth=8)
estimator.fit(x, y)
# 模型评估
# 方法1:直接比对真实值和预测值
y_predict = estimator.predict(m)
print("y_predict:\n", y_predict)
print("直接比对真实值和预测值:\n", n == y_predict)
# 方法2:计算准确率
score = estimator.score(m, n)
print("准确率为:\n", score)

2、运行结果
 

回顾下:
x是训练集的特征值,y是训练集的目标值,m是测试集的特征值,n是测试集的目标值
但是对比决策树的94%准确率,随机森林反而降低了

六、总结

1、在当前所有算法中,具有极好的准确率
2、能够有效地运行在大数据集上,处理具有高维特征的输入样本,而且不需要降维
3、能够评估各个特征在分类问题上的重要性
 

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

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

相关文章

论文悦读(6)——PM操作系统之TreeSLS单级存储

TreeSLS (SOSP23) 1. 背景 (Background)1.1 内存-存储二级架构 (1, 2.1)1.2 单级架构 (2.2)1.3 总结 2. 动机 (Motivation)2.1 现有SLS性能低下 (2.3)2.2 现有SLS难以支持External Synchrony (1, 2.4)2.3 高速PM出现为SLS带来新的机遇与挑战 (1, 2.5) 3.…

CDN是什么?(网络零基础入门篇)

1.CDN的全称 是 Content Delivery Network,即内容分发网络。 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。 通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网…

探索古彝文的秘密,AI实现古籍传承

陈老老老板🤴 🧙‍♂️本文专栏:生活(主要讲一下自己生活相关的内容)生活就像海洋,只有意志坚强的人,才能到达彼岸。 🧙‍♂️本文简述:最新资讯,合合信息扫描全能王实现古彝文识别&…

sigmoid和softmax函数有什么区别

Sigmoid函数和Softmax函数都是常用的激活函数,但它们的主要区别在于应用场景和输出结果的性质。 Sigmoid函数(也称为 Logistic函数): Sigmoid函数将输入值映射到0到1之间的连续实数范围,通常用于二元分类问题。 Si…

U-Net神经网络简明教程

推荐:用 NSDT编辑器 快速搭建可编程3D场景 在我们进入技术细节之前,考虑一下,为什么要使用 U-Net? 你可能在搜索语义分割时遇到过这一点,我很快就会写一篇博客,然后再看看这个。 制作此架构的初衷是用于生物…

Spring MVC程序开发(JavaEE进阶系列3)

目录 前言: 1.什么是Spring MVC 1.1MVC的定义 1.2MVC和Spring MVC的关系 1.3为什么要学习Spring MVC 2.Spring MVC项目的创建 3.Spring MVC框架的使用 3.1连接的功能 3.1.1RequestMapping 3.1.2GetMapping 3.1.3PostMapping 3.2获取参数的功能 3.2.1获…

罗彻斯特大学探讨ChatGPT等人工智能将如何影响高等教育

人工智能聊天机器人ChatGPT持续引起互联网用户的热议,它能够回答关于各个领域的问题,创作歌曲、食谱,起草电子邮件等等。罗切斯特的教职员工和管理人员就他们如何处理 ChatGPT 以及它如何影响未来的教学和学习提出了他们的想法。 “让这项技…

基于Java的新能源汽车在线租赁平台设计与实现(源码+lw+ppt+部署文档+视频讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

基于ChatGPT快速入门体验NLP词云

基于ChatGPT快速入门体验NLP词云 一、什么是自然语言处理二、自然语言处理和词云的关系三、Python环境准备四、基于ChatGpt制作词云4.1 ChatGPT生成初级词云代码4.2 ChatGPT生成进阶词云代码4.3 基于ChatGPT解决代码问题4.4 基于ChatGPT建议修改问题代码 一、什么是自然语言处理…

c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现)

前段时间也是把指针较为详细系统的讲解完毕,接下来介绍一个全新的知识点,就是字符函数和字符串函数 前几期文章可进我主页观看:总之就是非常唔姆_Matlab,经验分享,c语言题目分享-CSDN博客 想要源代码可以去我的github看看:Neros…

教你拥有一个自己的QQ机器人!0基础超详细保姆级教学!基于NoneBot2 Windows端搭建QQ机器人

0.序言 原文链接:教你本地化部署一个QQ机器人本教程主要面向Windows系统用户教程从0开始全程详细指导,0基础萌新请放心食用🍕如果你遇到了问题,请仔细检查是否哪一步有遗漏。如果你确定自己的操作没问题,可以到原文链…

苹果macbook电脑磁盘满了怎么清理内存

如果你是苹果macbook用户,可能会面临一个常见但又令人头疼的问题——磁盘空间不足。这不仅影响了你的电脑性能,还可能导致新的软件无法安装,甚至影响到文件的保存。好消息是,有多种方法可以有效地解决这个问题。下面就一起来看看吧…

【100个 Unity实用技能】☀️ | UGUI Text中加入超链接文本,可直接点击跳转

Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…

unity脚本_Input鼠标键盘 c#

获取鼠标坐标 检测鼠标输入 如果在运行游戏场景中点击一下鼠标左键 检测鼠标抬起 选中即可 检测键盘按下 当前屏幕分辨率 注意:获取的是显示器的分辨率 获取设备屏幕宽高 屏幕休眠模式 窗口/全屏模式 移动设备屏幕转向

【C语言】字符函数和字符串函数(1)

#国庆发生的那些事儿# 大家好,我是苏貝,本篇博客带大家了解字符函数和字符串函数,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1.本章重点2. strlen2.1函数介绍2.2 模拟实现 3. strcpy3…

第八章 排序 六、简单选择排序

目录 一、算法思想 二、例子 1、我们有以下序列要排序 2、首先从左往右扫描,在其中找到最小的一个数,让它与第一个数互换位置 3、此次扫描完成后,我们取新的子序列,并再次从左往右扫描,在其中找到最小的一个数&…

makeMakefile

一、 什么是make&Makefile ? ①make 是一条命令,makefile是一个文件,配合使用,通过依赖关系和依赖方法达到我们形成可执行程序的目的 ②makefile好处就是可以进行 自动化编译 ” ,极大的提高软件开发的效率,一旦写好,只需要一个 make 命令…

推荐一款在线的JDK17中文文档

spring6.0及springboot3.0最低版本要求都是java17,换上java17是迟早的事,所以虽然我现在做的是java8,但是后面我想从java8直接飞升到java17,先做个准备,找到一个JDK17的中文文档,是在线的,地址&…

数据结构刷题训练——二叉树篇(一)

📙作者简介: 清水加冰,目前大二在读,正在学习C/C、Python、操作系统、数据库等。 📘相关专栏:C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d…

学习记忆——方法篇——整除特点

理解记忆法 对于数的整除特征大家都比较熟悉:比如4看后两位(因为100是4的倍数),8看后三位(因为1000是8的倍数),5末尾是0或5,3与9看各位数字和等等,今天重点研究一下3,9,…