【机器学习】随机森林

随机森林

文章目录

  • 随机森林
    • 1. 什么是集成学习方法
    • 2. 随机森林
    • 3. 随机森林工作过程
    • 4. API
    • 5. 总结

1. 什么是集成学习方法

集成学习方法通过建立几个模型组合来解决单一预测问题。它的工作原理就是生成多个分类器/模型,各自独立地学习和做出预测。这些预测最后结合成组合预测,因此优于任何一个单分类做出的预测。

2. 随机森林

在机器学习中,随机森林是一个包含多个决策树的分类器。并且其输出的类别是由个别树输出的类别来确定的。随机森林是一种监督式学习算法,适用于分类和回归问题,随机森林是在决策树的基础上建立的,它可以减少决策树由于过度拟合数据而导致的过拟合。

  • 先来看看什么是过拟合吧,下面是一个通俗的解释:

当我们使用决策树来构建一个模型时,它会尝试根据我们提供的训练数据来做出决策。但有时候,决策树可能会变得太聪明,以至于在训练数据上表现得非常好,就像一个记住了所有问题答案的学生。这听起来很棒?但问题是,当这个决策树遇到新的问题或数据时,它可能会因为过于"死记硬背"而无法正确回答问题。这位学生就像一个过拟合的决策树模型。他在训练数据(问题)上表现得很好,但在新的数据(不同的问题)上却无法正确回答。这是因为他没有理解问题背后的数学原理,而只是记住了特定问题的答案。所以,为了避免过拟合,我们需要确保我们的决策树模型不仅仅记住了训练数据,还真正理解了数据背后的模式和规律,以便在新数据上表现良好。

  • 随机森林核心:

当训练数据被输入模型时,随机森林,并不是用整个训练数据集建立一个大的决策树,而是采用不同的子集和特征属性,建立多个小的决策树,然后将他们合并成一个更大的模型。并且,每一个子集都是通过随机选择的样本和随随机选择的特征属性来建立的,这种随机化可以减少决策树对于训练数据的敏感性,从而防止过拟合。

3. 随机森林工作过程

  1. 从训练集中随机选择一个子集,同时随机选择其中的某一些特征属性。
  2. 建立一个决策树模型,将该子集和特征属性用于训练模型,
  3. 重复以上步骤,直到建立了一定数量的决策树。
  4. 当输入未知数据时,对于每一个决策树进行预测,采用投票或者平均的方式来得到最终预测结果。

4. API

class sklearn.ensemble.RandomForestClassifier(n_estimators=10,criterion=‘gini’,max_depth=None,bootstrap=True,random_state=None,min_samples_split=2)

  • 随机森林分类器
  • n_estimators:integer,optional(default=10)森林里的树木数量,120,200,300,500,800,1200
  • criteria:string,可选(default=“gini”)分割特征的测量方法
  • max_depth:integer或None,可选(默认=无)树的最大深度为5,8,15,25,30
  • max_features=“auto”,每个决策树的最大特征数量
    • auto:max_features=sqrt(n_features)
    • sqrt:max_features=sqrt(n_features)
    • log2:max_feature=log2(n_features)
    • None:max_features=n_features
  • bootstrap:boolean,optional(default=True)是否在构建树的时候使用放回抽样
  • min_samples_split:结点划分最少样本数
  • min_samples_leaf:叶子节点的最小样本数
  • 超参数:n_estimator,max_depth,min_samples_split,min_samples_leaf
estimator = RandomForestClassifier()
# 加入网格搜索和交叉认证
# 参数准备
param_dict = {"n_estimators": [120,200,300,500,800,1200], "max_depth": [5,8,15,25,30]}
estimator = GridSearch(estimator, param_grid= param_dict, cv= 3)
estimator.fit(x_train, y_train)
...

模板代码:

# 导入必要的库
from sklearn.ensemble import RandomForestClassifier  # 随机森林分类器
from sklearn.model_selection import train_test_split  # 数据集划分
from sklearn.metrics import accuracy_score, classification_report  # 模型评估指标# 准备数据
# 请将X和y替换为你的特征矩阵和目标向量
X, y = your_data, your_target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建随机森林分类器模型
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
# 可以根据需要设置其他超参数# 训练模型
rf_model.fit(X_train, y_train)# 进行预测
y_pred = rf_model.predict(X_test)# 评估模型性能
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率:{accuracy:.2f}")# 打印更详细的性能报告
report = classification_report(y_test, y_pred)
print("分类报告:")
print(report)

5. 总结

  • 具有极好的准确率
  • 能够有效地运行在大数据集上,处理具有高维度特征的输入样本,而且不需要降维
  • 能够评估各个特征在分类问题上的重要性

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

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

相关文章

分析:如何多线程运行测试用例

这是时常被问到的问题,尤其是UI自动化的运行,过程非常耗时,所以,所以多线程不失为一种首先想到的解决方案。 多线程是针对的测试用例,所以和selenium没有直接关系,我们要关心的是单元测试框架。 unittest …

Spring IOC - Spring启动过程解析

Spring启动流程的核心逻辑主要体现在方法AbstractApplicationContext#refresh中,该方法没有被子类重写。 本文主要从宏观层面对其进行剖析,从整体上感知。各执行步骤和作用按先后顺序如下表所示,其中标红方法为核心方法,标绿色方法…

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等

SSTI模板注入-中括号、args、下划线、单双引号、os、request、花括号、数字被过滤绕过(ctfshow web入门370)-CSDN博客 ssti板块注入 正好不会 {%%}的内容 学习一下 经过测试 发现过滤了 {{}} 那么我们就开始吧 我们可以通过这个语句来查询是否存在ss…

免费亲人微信聊天记录提取软件新版本v1.1,使用说明,注意事项 2023.11.06

V 1.1 优化了备份速度,新增了备份消息类型的选型,可以选择仅仅备份文本,或者文本与音频,或者文本音频视频图片。 有什么办法可以导出与某个人的微信聊天记录? 只想导出与某个微信好友的聊天记录,有办法做到…

内网服务器(不通外网)访问高德在线地图服务的方法

在项目部署过程中,若部署服务器处于内网环境,则无法调用高德服务。需要通过搭建代理实现请求的转发,从而获取到在线服务内容。下面的记录解决了内网服务器访问高德地图服务的问题。 一、所需设备 内网服务器(项目所需部署环境&a…

运维知识点-MySQL从小白到入土

MySQL从小白到入土 mysql 服务器安装windows mysql 服务漏洞复现-mysql jdbc反序列化-权限绕过 mysql 服务器安装 https://dev.mysql.com/downloads/mysql/https://www.cnblogs.com/xiaostudy/p/12262804.html 点餐小程序腾讯云服务器安装mysql8 windows mysql 服务 net sta…

1.UML面向对象类图和关系

文章目录 4种静态结构图类图类的表示类与类之间的关系依赖关系(Dependency)关联关系(Association)聚合(Aggregation)组合(Composition)实现(Realization)继承/泛化(Inheritance/Generalization)常用的UML工具reference欢迎访问个人网络日志🌹🌹知行空间🌹🌹 4种静态结构…

cp没有--exclude选项!Linux复制文件夹时如何排除一些文件?

之前使用tar命令压缩文件将时,使用了–exclude选项排除了一些不需要的文件。现在我想复制一个文件夹,但是其中一些文件不需要复制,此时注意到cp命令居然没有–exclude选项。 rsync可以快速地帮助我们完成相同的事情,命令如下&…

rust 基础数据类型

默认类型 大部分情况下,rust 可以基于上下文自动推导出变量的类型。下面代码中,变量 x 没有显式,rust 默认是 i32 类型。 fn main() {let x 5; }但也有一些例外情况,比如,字符串类型的转换中变量 x 的类型&#xff…

【Java 进阶篇】JSP 简单入门

在现代Web开发中,JavaServer Pages(JSP)是一项非常重要的技术。JSP允许开发者将Java代码嵌入HTML页面,以实现动态内容的生成和呈现。本文将详细介绍JSP的概念、原理以及如何使用JSP来构建Web应用程序。 第一部分:JSP …

如何将 XxlJob 集成达梦数据库

1. 前言 在某些情况下,你的项目可能会面临数据库选择的特殊要求,随着国产化的不断推进,达梦数据库是一个常见的选择。本篇博客将教你如何解决 XxlJob 与达梦数据库之间的 SQL 兼容性问题,以便你的任务调度系统能够在这个数据库中…

章鱼网络进展月报 | 2023.10.1-10.31

章鱼网络大事摘要 1、Louis 成功竞选 NDC 的 HoM 议席,将会尽最大努力推动 NEAR 变革。2、章鱼网络受邀参加在土耳其主办的 Cosmoverse2023,分享 Adaptive IBC 的技术架构。3、2023年10月8日章鱼日,是章鱼网络主网上线2周年的纪念日。 …

机器学习---SVM目标函数求解,SMO算法

1. 线性可分支持向量机 1.1 定义输入数据 假设给定⼀个特征空间上的训练集为: 其中,(x , y )称为样本点。 x 为第i个实例(样本)。 y 为x 的标记: 当y 1时,x 为正例;当y −1时,x…

vue3项目实践

创建 vue3 项目 node本版:node 16.x.x, 脚手架:create-vue 脚手架工具,底层vite 创建vue3项目:npm init vuelatest setup函数 vue3 单文件组件 1、vite.config.js配置文件基于vite的配置 2、template模板不再要求唯…

NOIP2023模拟10联测31 游戏

题目大意 Alice \text{Alice} Alice和 Bob \text{Bob} Bob在玩一个游戏:有一个由正整数组成的集合 S S S,两人轮流从中选数, Alice \text{Alice} Alice先手。每次一个人可以从当前集合中选一个数 x x x,把 x x x以及 x x x在集合中…

docker compose实现容器编排

Compose 使用的三个步骤: 使用 Dockerfile 定义应用程序的环境 使用 compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行 最后,执行 docker compose up 命令来启动并运行整个应用程序 为什么需要docker compose Dock…

使用VBA打印PDF文件

使用VBA打印工作表和工作簿文件都很容易实现,但是有时需要使用VBA打印已经保存在本机的其他文件,例如PDF文件格式的账单,如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。 调用Windows的Shell命令可以实现打印PDF文件。 示例代码…

万宾科技管网水位监测助力智慧城市的排水系统

以往如果要了解城市地下排水管网的水位变化,需要依靠人工巡检或者排查的方式,这不仅加大了人员的工作量,而且也为市政府带来了更多的工作难题。比如人员监管监测不到位或无法远程监控等情况,都会降低市政府对排水管网的管理能力&a…

SpringBoot配置文件优先级

1.idea临时属性 说明:Program arguments配置--server.port8082 --ab;意思是将端口改成了8082。这个优先级最高。 2.resource 说明:创建config文件里面的yml文件。 3.jar包同级(yml) 说明:创建一个yml文件…

如何去除视频水印?三种简便有效的方法解决视频水印问题

在当今社交媒体时代,视频分享已成为一种流行趋势。然而,很多人在分享自己的作品时却苦于视频上存在的水印,水印通常是出于版权保护或品牌推广的目的而添加到视频中的,但有时它们可能会对用户体验造成负面影响。 如果您正在寻找如何…