机器学习:随机森林

集成学习

集成学习(Ensemble Learning)是一种机器学习方法,通过将多个基本学习算法的预测结果进行组合,以获得更好的预测性能。集成学习的基本思想是通过结合多个弱分类器或回归器的预测结果,来构建一个更强大的集成模型。集成学习可以用于分类问题和回归问题。在分类问题中,集成学习将多个分类器的预测结果进行投票或加权组合,最终输出集成模型的预测结果。在回归问题中,集成学习将多个回归器的预测结果进行平均或加权平均,得到最终的回归结果。

在这里插入图片描述

集成学习的优势在于能够减少单个模型的过拟合风险,提高模型的泛化能力。通过结合多个模型的预测结果,集成模型可以在不同数据分布、噪声和样本偏差等情况下表现更好。然而,集成学习也需要考虑模型之间的差异性,过度集成可能导致过拟合,因此在实践中需要进行适当的调参和模型选择。

Bagging

Bagging(Bootstrap Aggregating)是一种基于自助采样(bootstrap sampling)和集成学习的方法。它通过对原始训练集进行有放回采样,生成多个采样集,然后使用每个采样集来训练一个基本分类器或回归器。最后,通过对这些基本模型的预测结果进行投票或平均,得到最终的集成模型的预测结果。

Bagging的步骤如下:

1.自助采样(Bootstrap Sampling):

从原始训练集中有放回地随机采样,生成多个采样集,每个采样集的样本数量与原始训练集相同,但可能包含重复样本和缺失样本。

2.基本模型训练:

使用每个采样集来训练一个基本分类器或回归器。这些基本模型可以是相同的学习算法,也可以是不同的学习算法。

3.预测结果集成:

对于分类问题,采用多数投票的方式,将基本模型的预测结果进行投票,选择得票最多的类别作为集成模型的最终预测结果。对于回归问题,采用平均或加权平均的方式,将基本模型的预测结果进行平均,得到集成模型的最终预测结果。

在这里插入图片描述

Bagging的优势在于能够减少模型的方差,提高模型的稳定性和泛化能力。由于每个基本模型都是在不同的训练集上独立训练的,它们可以捕捉到数据集中的不同特征和噪声,从而减少了单个模型的过拟合风险。此外,Bagging还可以并行化处理,加速模型训练的过程。

随机森林

随机森林(Random Forest)是一种基于决策树的集成学习方法,通过构建多个决策树,并对它们的预测结果进行集成,来实现分类和回归任务。随机森林结合了Bagging和随机特征选择的技术,具有较好的泛化能力和抗过拟合能力。随机森林的优点如下:

  • 随机森林对于高维数据和大规模数据集的处理能力较强。
  • 随机森林能够提供特征的重要性评估,帮助我们理解数据中各个特征的相对重要性。
  • 随机森林能够有效地处理缺失值和异常值,不需要数据预处理的步骤。
  • 随机森林在训练过程中可以并行化处理,加速模型的训练过程。

在这里插入图片描述

算法步骤

1.决策树的构建:

决策树是一种基本的分类与回归方法,它通过对特征空间进行划分来建立决策规则。在随机森林中,每个决策树都是独立构建的,使用训练集的一个采样集来训练。决策树的构建过程中,通过对特征的随机选择,限制了每个节点可用的特征子集,从而增加了模型的多样性。一般情况下,对于分类问题,随机选择的特征子集大小一般为总特征数的平方根;对于回归问题,一般选择总特征数的三分之一。

2.自助采样(Bootstrap Sampling):

随机森林通过自助采样生成多个采样集。自助采样是一种有放回地随机采样方法,从原始训练集中随机选择与原始训练集相同数量的样本,形成一个采样集。自助采样过程中,每次采样都是独立的,因此某些样本可能在同一个采样集中出现多次,而另一些样本可能被忽略。

3.特征选择:

在每个决策树的节点中,随机森林通过随机选择一部分特征来进行划分。这种特征选择的方式增加了决策树之间的差异性,避免了过度拟合。特征选择的过程可以采用随机选择一定数量的特征子集,也可以采用随机选择一个特定的特征子集。

4.决策树集成:

随机森林通过对多个决策树的预测结果进行集成来得出最终的预测结果。对于分类问题,采用多数投票的方式,选择得票最多的类别作为随机森林的最终预测结果。对于回归问题,采用平均或加权平均的方式,将多个决策树的预测结果进行平均,得到最终的回归结果。

随机森林实现

from sklearn import treeimport os
import pandas as pd
import numpy as np
import sklearn
import xgboost as xgbfrom utils.features import *import warningswarnings.filterwarnings("ignore")def load_datasets():pd.set_option('display.max_columns', 1000)pd.set_option('display.width', 1000)pd.set_option('display.max_colwidth', 1000)df = pd.read_pickle('****.pickle')features = darshan_featuresprint(df.head(10))df_train, df_test = sklearn.model_selection.train_test_split(df, test_size=0.2)X_train, X_test = df_train[features], df_test[features]print(X_test)y_train, y_test = df_train["value"], df_test["value"]print(y_test)return X_train, X_test, y_train, y_testdef model_train(X_train, X_test, y_train, y_test):# 决策树回归clf = tree.DecisionTreeRegressor()# 拟合数据clf = clf.fit(X_train, y_train)y_pred_test = clf.predict(X_test)print(y_test)print(y_pred_test)error = np.median(10 ** np.abs(y_test - y_pred_test))print(error)def main():X_train, X_test, y_train, y_test = load_datasets()model_train(X_train, X_test, y_train, y_test)if __name__ == "__main__":main()

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

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

相关文章

一、综合——法律法规

文章目录 一、《中华人民共和国电信条例》1.1 《电信条例》关于电信市场的规定1.2 《电信条例》关于电信服务的规定1.3 《电信条例》关于电信建设的规定二、《公用电信网间互联管理规定》2.1《网间互联规定》概述2.2 电信业务经营者的互联义务三、《中华人民共和国网络安全法》…

Window Anaconda 安装pytorch 启用cuda 终究手段

1.首先你的电脑要有NVIDIA 的显卡.没有就走吧,你如果不是window ,也走吧,不一定教程管用。 2.然后要明白,有两种CUDA版本,一个叫运行时api,一个是驱动api 2.1 运行时cuda 版本查看 (是你跑深度学习模型或其…

Android用户登录与数据存储:从权限请求到内外部存储的完整实践【完整实践步骤、外部存储、内部存储】

步骤 1: 登录页面布局 在 MainActivity 中实现用户登录功能&#xff0c;首先创建一个布局文件 activity_main.xml 包含用户名和密码的输入字段以及登录按钮。 <!-- activity_main.xml --> <LinearLayoutxmlns:android"http://schemas.android.com/apk/res/andr…

linux安装idea

下载好之后是.tar.gz文件后缀的 使用命令解压安装包 tar -zxvf 你的安装包 解压好了之后进入解压好的目录找到bin文件里的idea.sh,使用命令启动它 ./idea.sh 这样你就可以在manjaro上使用idea了 在这里插入图片描述 需要手动创建快捷启动方式 每次都使用命令行启动是比较…

ROS+PX4+mavros+qgc环境搭建笔记

环境搭建&#xff1a; Ubuntu20.04中 jmavsim开启失败问题解决方案 b站hg教程&#xff1a; b站px4环境安装教程文档 bilibili 资料链接&#xff1a;https://pan.baidu.com/s/1P2gqfdofudzguFvBiM55QA?pwdllye 提取码&#xff1a;llye

单元测试该怎么写

单元测试对于开发人员来说很熟悉&#xff0c;各种语言都提供了单元测试的框架&#xff0c;用于自动化执行单元测试并生成测试报告。它通常提供了一组API和工具&#xff0c;使开发人员能够编写和运行测试用例&#xff0c;比较预期行为和实际行为之间的差异&#xff0c;并准确地识…

rust闭包

一、闭包是什么 &#xff08;一&#xff09;闭包是什么 我们先来看看javascript中的闭包。 在函数外部无法读取函数内的局部变量。但是我们有时候需要得到函数内的局部变量&#xff0c;那么如何从外部读取局部变量&#xff1f;那就是在函数的内部&#xff0c;再定义一个函数。…

【已验证】微信小程序介绍及创建过程23.10.08

1、环境准备 开发微信⼩程序之前&#xff0c;必须要准备好相应的环境 1.1.注册账号 建议使用全新的邮箱&#xff0c;没有注册过其他小程序或者公众号的。访问注册⻚⾯&#xff0c;耐⼼完成注册即可。 1.2.获取APPID 由于登录&#xff0c;然后获取APPID 2.开发工具 下载地…

ElementUI结合Vue完成主页的CUD(增删改)表单验证

目录 一、CUD ( 1 ) CU讲述 ( 2 ) 编写 1. CU 2. 删除 二、验证 前端整合代码 : 一、CUD 以下的代码基于我博客中的代码进行续写 : 使用ElementUI结合Vue导航菜单和后台数据分页查询 ( 1 ) CU讲述 在CRUD操作中&#xff0c;CU代表创建&#xff08;Create&#xff09…

2034. 股票价格波动

给你一支股票价格的数据流。数据流中每一条记录包含一个 时间戳 和该时间点股票对应的 价格 。 不巧的是&#xff0c;由于股票市场内在的波动性&#xff0c;股票价格记录可能不是按时间顺序到来的。某些情况下&#xff0c;有的记录可能是错的。如果两个有相同时间戳的记录出现…

大数据架构设计(四十五)

大数据架构有Lambda架构和Kappa架构。 大数据可以解决的问题? 处理非结构化和半结构化数据。大数据复杂性、不确定性特征描述和刻画方法以及大数据系统建模。数据易构性 与 决策易购性的关系。&#xff08;数据易构性主要是不同的数据库种类&#xff09; 大数据处理系统系统特…

系统架构设计:5 论软件的可靠性设计

目录 一 可靠性设计 1 可靠性 2 影响可靠性的因素 3可靠性设计技术 (1)避错技术

设备搭建(waf、蜜罐、ids和ips)

文章目录 防火墙waf网闸蜜罐idsips 防火墙 DMZ区域叫非军事化区减&#xff0c;DMZ有web服务或者MySQL服务&#xff0c;从互联网到dmz的流量一般不拦截&#xff08;因为需要互联网用户访问web服务&#xff09;&#xff0c;如果dmz沦陷&#xff0c;攻击者想要继续横向移动到内网…

Vue中实现自定义编辑邮件发送到指定邮箱(纯前端实现)

formspree里面注册账号 注册完成后进入后台新建项目并且新建表单 这一步完成之后你将得到一个地址 最后就是在项目中请求这个地址 关键代码如下&#xff1a; submitForm() {this.fullscreenLoading true;this.$axios({method: "post",url: "https://xxxxxxx…

什么是数据库锁(Lock)?有哪些类型的锁

数据库锁&#xff08;Lock&#xff09;&#xff1a;保护数据完整性与并发性的关键 数据库锁&#xff08;Lock&#xff09;是在数据库管理系统中用于管理并发访问数据的重要机制。它们确保了多个用户或事务可以同时访问数据库&#xff0c;同时保护数据的完整性。在本文中&#…

7.wifi开发【智能家居:终】,实践总结:智能开关,智能采集温湿,智能灯。项目运行步骤与运行细节,技术归纳与提炼,项目扩展

一。项目运行步骤与运行细节 1.项目运行步骤&#xff08;一定有其他的运行方式&#xff0c;我这里只提供一种我现在使用的编译方式&#xff09; &#xff08;1&#xff09;项目运行使用软件与技术&#xff1a; 1.Virtual linux 使用这个虚拟机进行程序的编译 2.Makefile与shl…

2023年下学期《C语言》作业0x02-分支 XTU OJ 1068 1069 1070 1071 1072

第一题 #include<stdio.h>int main() {int a;scanf("%d",&a);if(a>90&&a<100) printf("A");else printf("B");return 0; } 没有换行&#xff0c;不然会格式错误 第二题 #include<stdio.h>int main() {int a;s…

数字人直播系统源码交付,数字人直播软件下载迎来普及化

随着数字人直播行业的蓬勃发展&#xff0c;铭顺科技数字人直播系统成为了行业中的一大亮点。通过一次性买断和源码级交付的模式&#xff0c;数字人直播正迎来普及化的浪潮&#xff0c;这种创新的交付方式带来了许多好处&#xff0c;为数字人直播的推广和应用提供了强有力的支持…

【Navicat】win 10 / win 11:Navicat 15 安装完整教程(navicat 连接 mysql 出现 2059 报错问题解决)

目录 一、Navicat 连接 mysql 出现 2059 报错问题解决 二、Navicat 15 的下载 三、Navicat 15 的安装 四、Navicat 15 的使用 一、Navicat 连接 mysql 出现 2059 报错问题解决 之前使用的是完整版本 navicat 12&#xff0c;但是随着 MySQL 的升级&#xff0c;再连接 MySQL…

【SpringCloud】认识微服务

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 认识微服务 一、 服务架构演变1.1 单体架构…