机器学习_10、集成学习-随机森林

随机森林算法

随机森林(Random Forest)是一种集成学习方法,特别用于分类、回归和其他任务,它通过构建多个决策树(Decision Trees)在训练时进行预测,并采用平均或多数投票的方式来提高整体模型的准确性和鲁棒性。随机森林是由Leo Breiman和Adele Cutler提出的,它结合了Bagging(Bootstrap Aggregating)的思想和随机特征选择来构建决策树的集合。

工作原理

随机森林的工作过程可以概括为以下几个步骤:

  1. 自助采样(Bootstrap sampling):从原始数据集中使用有放回的抽样方式随机选择N个样本,形成一个训练集。这个过程重复进行多次,每次生成的训练集都用来构建一个新的决策树。

  2. 随机选择特征:在构建决策树的每个分裂节点时,不是查看所有特征来选择最佳分裂特征,而是随机选择一部分特征候选集,并从中选择最佳分裂特征。这一步增加了模型的随机性,有助于提高模型的泛化能力。

  3. 构建决策树:对于每个训练集,构建一个决策树。决策树在训练过程中不进行剪枝,允许它们尽可能地生长到最大深度。

  4. 汇总结果

    • 对于分类任务,随机森林通过多数投票的方式确定最终的类别输出。
    • 对于回归任务,随机森林将所有决策树的预测结果取平均值作为最终的预测输出。

特点和优势

  • 准确性高:通过集成多个决策树,随机森林通常能够达到很高的准确率,并且相比单个决策树,它更不容易过拟合。
  • 鲁棒性强:随机森林能够处理大量数据集,即使数据具有高维特征并且存在少量的缺失数据也能很好地工作。
  • 变量重要性评估:随机森林能够提供关于特征重要性的估计,这对于理解数据集中哪些特征对预测变量贡献最大非常有用。
  • 适用范围广:随机森林可以用于分类和回归任务,也被用于异常点检测等其他机器学习任务中。

应用场景

随机森林因其出色的准确性、鲁棒性和易用性,在各种领域得到了广泛的应用,包括但不限于:

  • 医疗诊断
  • 金融风险评估
  • 股票市场分析
  • 客户行为预测
  • 图像分类和识别
  • 生物信息学和基因分类
#coding=utf-8
#RandomForestClassifier.py
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier# 加载数据
filename="./glass.data"
glass_data = pd.read_csv(filename,index_col=0,header=None)
# 先从DataFrame中取出数组值(.value),只是为了方便后面显示
X,y = glass_data.iloc[:,:-1].values, glass_data.iloc[:,-1].values
#X,y = glass_data.iloc[:,:-1], glass_data.iloc[:,-1]
# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, shuffle=True, stratify=y, random_state=1)# 建立模型
rfc = RandomForestClassifier(max_depth=4,bootstrap=True,random_state=0)
rfc.fit(X_train, y_train)
print("训练集准确率:",rfc.score(X_train,y_train))
print("测试集准确率:",rfc.score(X_test,y_test))
print("测试集前2个样本的预测分类标签:",rfc.predict(X_test[:2]))
print("测试集前2个样本的真实分类标签:",y_test[:2])
print("测试集前2个样本所属标签概率的预测值:\n",rfc.predict_proba(X_test[:2]),sep="")

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

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

相关文章

【vue】keep-alive清除缓存最简单暴力的方法

项目场景: 场景一: 使用vue开发移动端, 有ABC三个页面,点击A跳转到B,点B跳转到C; 点C返回B,点B返回A。 场景二: 场景一实现之后,会出现这样一个问题: 先从A跳…

LeetCode 每日一题 2024/2/26-2024/3/3

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 2/26 938. 二叉搜索树的范围和2/27 2867. 统计树中的合法路径数目2/28 2673. 使二叉树所有路径值相等的最小代价2/29 2581. 统计可能的树根数目3/1 2369. 检查数组是否存在…

leetcode 热题 100_三数之和

题解一: 双指针遍历:暴力解法的三层遍历会超时,因此需要优化遍历的过程。首先是需要对结果进行去重,这里采用排序跳过重复值的做法,在指针遍历时跳过已经遍历过的相同值。在第一层循环确定第一个值后,剩下两…

模型部署 - onnx 的导出和分析 -(1) - PyTorch 导出 ONNX - 学习记录

onnx 的导出和分析 一、PyTorch 导出 ONNX 的方法1.1、一个简单的例子 -- 将线性模型转成 onnx1.2、导出多个输出头的模型1.3、导出含有动态维度的模型 二、pytorch 导出 onnx 不成功的时候如何解决2.1、修改 opset 的版本2.2、替换 pytorch 中的算子组合2.3、在 pytorch 登记&…

vscode+remote突然无法连接服务器以及ssh连接出问题时的排错方法

文章目录 设备描述状况描述解决方法当ssh连接出问题时的排错方法 设备描述 主机:win11,使用vscode的remote-ssh插件 服务器:阿里云的2C2GUbuntu 22.04 UFIE 状况描述 之前一直使用的是vscode的remote服务,都是能够正常连接服务…

【Qt】界面布局

Qt常用布局 除Qt Designer支持可视化设计和布局界面之外,Qt 提供了代码方式来进行界面布局, 以下是几种常用的界面布局方式: 水平布局(QHBoxLayout)和垂直布局(QVBoxLayout): QHBo…

Redis常用数据结构--Zset

Zset ZADDZCARDZCOUNTZRANGE/ZREVRANGEZRANGEBYSCOREZPOPMAX/ZPOPMINBZPOPMAX/BZPOPMINZRANK/ZREVRANKZSCOREZREMZREMRANGEBYRANKZREMRANGEBYSCOREZINCRBYZINTERSTORE/ZUNIONSTORE内部编码使⽤场景 ZADD 添加或者更新指定的元素以及关联的分数到 zset 中,分数应该符…

如何在 Angular 测试中使用 spy

简介 Jasmine spy 用于跟踪或存根函数或方法。spy 是一种检查函数是否被调用或提供自定义返回值的方法。我们可以使用spy 来测试依赖于服务的组件,并避免实际调用服务的方法来获取值。这有助于保持我们的单元测试专注于测试组件本身的内部而不是其依赖关系。 在本…

空调压缩机补充润滑油的方法

空调压缩机补充润滑油的方法有三种,从吸气截止阀旁边通孔吸入,从加油孔中加入,从曲轴箱下部加入,具体操作步骤如下: 1关闭吸气截止阀,启动压缩机几分钟,将曲轴箱中制冷剂排入冷凝器&#xff0c…

vue2结合electron开发桌面端应用

一、Electron是什么? Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 。允许您保持一个 JavaScript 代码代码库并创建可在Windows、macOS和Linux上运行的跨平台应用 。 Electron 经常与 Ch…

scrapy 中间件

就是发送请求的时候,会经过,中间件。中间件会处理,你的请求 下面是代码: # Define here the models for your spider middleware # # See documentation in: # https://docs.scrapy.org/en/latest/topics/spider-middleware.html…

【快速上手ProtoBuf】基本使用

文章目录 1 :peach:初识 ProtoBuf:peach:1.1 :apple:序列化概念:apple:1.2 :apple:ProtoBuf 是什么:apple:1.3 :apple:ProtoBuf 的使用特点:apple: 2 :peach:创建 .proto ⽂件:peach:3 :peach:编译 .proto 文件:peach:3 :peach:序列化与反序列化的使用:peach: 1 🍑初…

洛谷 2036.PERKET

采用递归法的方式进行题解。 思路:首先我们知道在n种材料当中,我们需要从中选择至少有一种得配料才行。也就是说,我们选择的配料数目是自己决定的,而不是那种组合型得对于你有要求的组合型递归方式。 所以我们会想到用指数型得递…

(五)网络优化与超参数选择--九五小庞

网络容量 网络中神经单元数越多,层数越多,神经网路的拟合能力越强。但是训练速度,难度越大,越容易产生过拟合。 如何选择超参数 所谓超参数,也就是搭建神经网路中,需要我们自己去选择(不是通…

LeetCode 刷题 [C++] 第45题.跳跃游戏 II

题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j < n 返回到达 nums[n …

递归函数(c++题解)

题目描述 对于一个递归函数w(a, b, c)。 如果a < 0 or b < 0 or c < 0就返回值1。 如果a > 20 or b > 20 or c > 20就返回W(20,20,20)。 如果a < b并且b < c 就返回w(a, b, c − 1) w(a, b − 1, c − 1) − w(a, b − 1, c)&#xff0c; 其它别…

计算机网络知多少-第1篇

一、 从输入URL到页面展示到底发生了什么&#xff1f; 1. 首先浏览器会查看电脑本地缓存&#xff0c;如果有直接返回&#xff0c;否则需要进行下一步的网络请求。 2. 在网络请求之前&#xff0c;需要先进行DNS解析&#xff0c;来找到请求域名的ip地址。如果是HTTPS请求&#…

【C语言】熟悉文件基础知识

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 文件 为了数据持久化保存&#xff0c;使用文件&#xff0c;否则数据存储在内存中&#xff0c;程序退出&#xff0c;内存回收&#xff0c;数据就会丢失。 程序设计中&…

微信小程序,h5端自适应登陆方式

微信小程序端只显示登陆(获取opid),h5端显示通过账户密码登陆 例如: 通过下面的变量控制: const isWeixin ref(false); // #ifdef MP-WEIXIN isWeixin.value true; // #endif

Git 查看提交历史

命令说明git log查看历史提交记录git blame (file)以列表形式查看指定文件的历史修改记录 git log 在使用 Git 提交了若干更新之后&#xff0c;又或者克隆了某个项目&#xff0c;想回顾下提交历史&#xff0c;我们可以使用 git log 命令查看。 git log 命令用于查看 Git 仓库中…