机器学习 集成学习方法之随机森林

集成学习方法之随机森林

  • 1 集成学习
  • 2 随机森林的算法原理
    • 2.1 Sklearn API
    • 2.2 示例

1 集成学习

机器学习中有一种大类叫集成学习(Ensemble Learning),集成学习的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类器。集成算法可以说从一方面验证了中国的一句老话:三个臭皮匠,赛过诸葛亮。集成算法大致可以分为:Bagging,Boosting 和 Stacking 三大类型。

(1)每次有放回地从训练集中取出 n 个训练样本,组成新的训练集;

(2)利用新的训练集,训练得到M个子模型;

(3)对于分类问题,采用投票的方法,得票最多子模型的分类类别为最终的类别;

2 随机森林的算法原理

随机森林就属于集成学习,是通过构建一个包含多个决策树(通常称为基学习器或弱学习器)的森林, 每棵树都在不同的数据子集和特征子集上进行训练,最终通过投票或平均预测结果来产生更准确和稳健的预测。这种方法不仅提高了预测精度,也降低了过拟合风险,并且能够处理高维度和大规模数据集

在这里插入图片描述
特点:

  • 随机: 特征随机,训练集随机
    • 样本:对于一个总体训练集T,T中共有N个样本,每次有放回地随机选择n个样本。用这n个样本来训练一个决策树。
    • 特征:假设训练集的特征个数为d,每次仅选择k(k<d)个来构建决策树。
  • 森林: 多个决策树分类器构成的分类器, 因为随机,所以可以生成多个决策树
  • 处理具有高维特征的输入样本,而且不需要降维
  • 使用平均或者投票来提高预测精度和控制过拟合
    在这里插入图片描述

2.1 Sklearn API

class sklearn.ensemble.RandomForestClassifier参数:
n_estimators	int, default=100
森林中树木的数量。(决策树个数)criterion	{“gini”, “entropy”}, default=”gini” 决策树属性划分算法选择当criterion取值为“gini”时采用 基尼不纯度(Gini impurity)算法构造决策树,当criterion取值为 “entropy” 时采用信息增益( information gain)算法构造决策树.max_depth	int, default=None 树的最大深度。 

2.2 示例

坦尼克号乘客生存
代码如下:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.feature_extraction import DictVectorizer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
import joblib
def train():# 数据集加载titanic=pd.read_csv(r"..\22day4.25机器学习\src\titanic\titanic.csv")# 数据集处理#获取关键特征titanic=titanic[['age','pclass','sex','survived']]# 将其中的缺省值赋值为这个列的平均值titanic["age"].fillna(titanic["age"].mean(),inplace=True)# 获取特征值和目标值x=titanic[['age','pclass','sex']]y=titanic[['survived']].to_numpy()# 将x转化为字典x=x.to_dict(orient='records')# 字典向量化vac=DictVectorizer(sparse=True)x=vac.fit_transform(x).toarray()# 划分数据集x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=22,shuffle=True)# 标准化transfer=StandardScaler()x_train=transfer.fit_transform(x_train)x_test=transfer.transform(x_train)print(x_test.shape,y_test.shape)# 模型建立model=RandomForestClassifier(n_estimators=10,max_depth=4)# 训练模型model.fit(x_train,y_train)# 模型评估score=model.score(x_test,y_test)print(score)# 保存模型joblib.dump(model,r"..\23day5.8\src\model\rf.pkl")joblib.dump(transfer,r"..\23day5.8\src\model\rf_transfer.pkl")joblib.dump(vac,r"..\23day5.8\src\model\rf_vac.pkl")
def detect():model=joblib.load(r"..\23day5.8\src\model\rf.pkl")transfer=joblib.load(r"..\23day5.8\src\model\rf_transfer.pkl")vac=joblib.load(r"..\23day5.8\src\model\rf_vac.pkl")x_test=[{'age':24,'pclass':'1st','sex':"male"}]x_test=vac.transform(x_test).toarray()# print(x_test)x_test=transfer.transform(x_test)prd=model.predict(x_test)print(prd)
if __name__=="__main__":train()# predict()detect()

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

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

相关文章

thinkphp6实现统一监听并记录所有执行的sql语句除查询外

创建文件app/middleware/SqlLogger.php <?php namespace app\middleware;use think\facade\Db; use think\facade\Session;class SqlLogger {public function handle($request, \Closure $next){// 监听所有SQL $request->ip()Db::listen(function($sql, $time) {if (p…

pytorch训练可视化工具---TensorBoard

一、目的&#xff1a;为什么使用 TensorBoard 调控模型 使用 TensorBoard 可以帮我们&#xff1a; 实时查看 loss / acc 曲线 → 判断是否过拟合、欠拟合&#xff1b; 对比不同模型或超参数的效果&#xff1b; 可视化模型结构 → 帮助调试模型设计&#xff1b; 查看权重/梯…

机器学习知识自然语言处理入门

一、引言&#xff1a;当文字遇上数学 —— 自然语言的数字化革命 在自然语言处理&#xff08;NLP&#xff09;的世界里&#xff0c;计算机要理解人类语言&#xff0c;首先需要将文字转化为数学向量。早期的 One-Hot 编码如同给每个词语分配一个唯一的 “房间号”&#xff0c;例…

Linux-线程概念和控制

1.Linux线程概念 1.1什么是线程 • 在⼀个程序⾥的⼀个执⾏路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“⼀个进程内部 的控制序列” • ⼀切进程⾄少都有⼀个执⾏线程 • 线程在进程内部运⾏&#xff0c;本质是在进程地址空间内运⾏…

【氮化镓】低剂量率对GaN HEMT栅极漏电的影响

2024 年 2 月 22 日,中国科学院新疆理化技术研究所的Li等人在《IEEE ACCESS》期刊发表了题为《Degradation Mechanisms of Gate Leakage in GaN-Based HEMTs at Low Dose Rate Irradiation》的文章,基于实验分析和 TCAD 仿真,研究了低剂量率辐照下基于 GaN 的 p 型栅高电子迁…

.NET Core 中 Swagger 配置详解:常用配置与实战技巧

随着微服务架构和 RESTful API 的广泛应用&#xff0c;API 文档的管理和自动化生成成为了开发中的重要部分。Swagger&#xff08;现为 OpenAPI&#xff09;是一款功能强大的工具&#xff0c;它可以自动生成 API 文档&#xff0c;并提供交互式 UI&#xff0c;帮助开发者、测试人…

海康工业相机白平衡比选择器对应的值被重置后,如何恢复原成像

做项目的时候&#xff0c;有时候手抖&#xff0c;一不小心把一个成熟稳定的项目的相机配置&#xff0c;重置了&#xff0c;如何进行恢复呢&#xff0c;在不知道之前配置数据的情况下。 我在做项目的时候&#xff0c;为了让这个相机成像稳定一点&#xff0c;尤其是做颜色检测时…

【八股战神篇】Java虚拟机(JVM)高频面试题

目录 专栏简介 一 请解释Java虚拟机(JVM)及其主要功能 延伸 1. JVM的基本概念 2. JVM的主要功能 二 对象创建的过程了解吗 延伸 1.Java 创建对象的四种常见方式 三 什么是双亲委派模型 延伸 1.双亲委派机制的作用: 2.双亲委派模型的核心思想: 3.双亲委派模型的…

win10 上删除文件夹失败的一个原因:sqlYog 备份/导出关联了该文件夹

在尝试删除路径为.../bak/sql的文件时&#xff0c;系统提示无权限操作。然而&#xff0c;关闭SQLyog后&#xff0c;删除操作成功完成。这表明SQLyog可能正在占用该文件&#xff0c;导致删除权限受限。关闭SQLyog后&#xff0c;文件被释放&#xff0c;删除操作得以顺利进行。建议…

Oracle中如何解决LATCH:CACHE BUFFERS LRU CHAIN

简单来讲&#xff0c;Oracle为了高效管理BUFFER CACHE主要使用以下2种LRU列&#xff1a; LRU列&#xff0c;又叫替换列&#xff08;replacement list&#xff09;&#xff0c;其中又分为主列和辅助列。 主列&#xff1a;已使用的缓冲区列&#xff0c;分为HOT和COLD区域。HOT区…

C++:迭代器

迭代器的本质&#xff1a;对象。 迭代器与指针类似&#xff0c;通过迭代器可以指向容器中的某个元素&#xff0c;还可以对元素进行操作。 迭代器统一规范了遍历方式。不同的数据结构可以用统一的方式去遍历。 接下来是一个自定义迭代器的代码示例。 #include<iostream&g…

(4)Java虚拟线程与传统线程对比

虚拟线程与传统线程对比 &#x1f504; &#x1f4cb; 核心问题 Project Loom的虚拟线程与传统线程在资源消耗上有何区别&#xff1f;如何设计一个支持百万级并发的服务&#xff1f; &#x1f4ca; 资源消耗比较 &#x1f418; 传统线程 &#x1f4cf; 每线程约1MB栈空间&am…

Java 单元测试框架比较:JUnit、TestNG 哪个更适合你?

Java 单元测试框架比较&#xff1a;JUnit、TestNG 哪个更适合你&#xff1f; 在 Java 开发领域&#xff0c;单元测试是保证代码质量的重要环节。而选择一个合适的单元测试框架&#xff0c;对于提升测试效率和代码可靠性至关重要。本文将深入比较 JUnit 和 TestNG 这两个主流的…

从零开始的抽奖系统创作(2)

我们接着进行抽奖系统的完善。 前面我们完成了 1.结构初始化&#xff08;统一结果返回之类的&#xff0c;还有包的分类&#xff09; 2.加密&#xff08;基于Hutool进行的对称与非对称加密&#xff09; 3.用户注册 接下来我们先完善一下结构&#xff08;统一异常处理&#…

【vs2022的C#窗体项目】打开运行+sql Server改为mysql数据库+发布

1. vs2022打开运行原sql Server的C#窗体项目更改为mysql数据库 1.1. vs2022安装基础模块即可 安装1️⃣vs核心编辑器2️⃣.net桌面开发必选&#xff0c;可选均不安装&#xff01;&#xff01;&#xff01; 为了成功连接mysql数据库&#xff0c;需要安装组件NuGet包管理器 安…

AI 编程 “幻觉” 风险频发?飞算 JavaAI 硬核技术筑牢安全防线

AI 技术已深度融入编程领域&#xff0c;为开发者带来前所未有的便利与效率提升。然而&#xff0c;AI 编程 “幻觉” 问题如影随形&#xff0c;频频引发困扰&#xff0c;成为阻碍行业稳健发展的潜在风险。飞算 JavaAI 凭借一系列硬核技术&#xff0c;强势出击&#xff0c;为攻克…

数据库----软考中级软件设计师(自用学习笔记)

目录 1、E-R图 2、结构数据模型 3、数据库的三级模式结构 4、关系代数 5、查询 6、SQL控制语句 7、视图​编辑 8、索引 9、关系模式 10、函数依赖 11、通过闭包求候选码 12、范式 13、无损连接和保持函数依赖 14、数据库设计 15、数据库的控制功能 16、数据库…

【Qt】Qt常见控件的相关知识点

1.close退出槽函数 2.设置快捷键&#xff0c;QMenu 。 适用&字母就能设置快捷键&#xff0c;运行qt程序&#xff0c;最后就可以按Alt对应的字母进行快捷操作。 3.QMenuBar内存泄露问题 如果ui已经自动生成了menubar&#xff0c;我们再次生成一个新的菜单栏&#xff0c;而…

httpx[http2] 和 httpx 的核心区别及使用场景如下

httpx[http2] 和 httpx 的核心区别在于 HTTP/2 协议支持&#xff0c;具体差异及使用场景如下&#xff1a; 1. 功能区别 命令/安装方式协议支持额外依赖适用场景pip install httpx仅 HTTP/1.1无通用请求&#xff0c;轻量依赖pip install httpx[http2]支持 HTTP/2需安装 h2>3…

Spring Boot 中 MyBatis 与 Spring Data JPA 的对比介绍

一、核心概念 MyBatis 定义&#xff1a;基于 SQL 的持久层框架&#xff0c;提供灵活的 SQL 映射和自定义查询能力。 特点&#xff1a; 开发者手动编写 SQL&#xff08;XML 或注解&#xff09;。 支持动态 SQL、复杂查询优化。 轻量级&#xff0c;对数据库控制力强。 Spri…