机器学习——随机森林(学习笔记)

news2024/9/19 9:45:14

目录

一、基础认识

1. 集成算法介绍

2. 集成算法种类

二、sklearn中的随机森林

1. ensemble.RandomForestClassifier (随机森林分类)

(1)基本参数

(2)基本属性

(3)基本接口

2. ensemble.RandomForestRegressor (随机森林回归)

3. 其他(补充)

三、测试代码

1. ensemble.RandomForestClassifier

2. ensemble.RandomForestRegressor


一、基础认识

1. 集成算法介绍

        集成学习 (ensemble learning) 是时下非常流行的 机器学习算法,它本身不是一个 单独的机器学习算法,而是 通过在数据上构建多个模型,集成所有模型的建模结果。基本上 所有的机器学习领域都可以 看到集成学习的 身影。在现在的 各种算法竞赛中,随机森林,梯度提升树(GBDT),Xgboost等集成算法的身影也随处可见,可见其效果之好,应用之广。

集成算法目标:

        集成算法 会考虑 多个评估器的 建模结果,汇总之后 得到一个综合 的结果,以此来 获取比 单个模型更好的回归或分类表现。

2. 集成算法种类

        多个模型集成成为的模型叫做 集成评估器(ensemble estimator),组成集成评估器的每个模型都叫做基评估器(base estimator)。通常来说,有三类集成算法:装袋法(Bagging),提升法(Boosting) 和stacking

        装袋法 的核心思想是构建多个相互独立的评估器,然后 对其预测 进行平均 或多数 表决原则来 决定集成评估器的 结果。装袋法的 代表模型就是 随机森林

        提升法 中,基评估器是 相关的,是按顺序 — — 构建的。其核心思想 是结合弱评估器的力量一次次对难以评估的样本 进行预测,从而构成一个强评估器。提升法的代表模型 有Adaboost和梯度提升树

二、sklearn中的随机森林

        涉及模块:sklearn.ensemble

1. ensemble.RandomForestClassifier (随机森林分类)

(1)基本参数

(2)基本属性

(3)基本接口

2. ensemble.RandomForestRegressor (随机森林回归)

        重要参数:criterion

        回归树 衡量分枝质量的指标,支持的标准有三种:

       ① 输入“ mse”使用均方误差mean squared error(MSE),父节点和叶子节点之间的均方误差的差额将被用来 作为 特征选择的 标准,这种方法 通过 使用叶子节点的 均值来 最小化 L2损失。

       ② 输入“ friedman_mse”,使用费尔德曼均方误差,这种指标使用弗里德曼针对潜在分枝中的问题改进后的均方误差。

       ③ 输入“ mae” 使用绝对平均误差 MAE (mean absolute error),这种指标使用 叶节点的中值来 最小化 L1损失。

3. 其他(补充)

        ① 单个决策树的 准确率越高,随机森林的 准确率也会越高,因为 装袋法是 依赖于 平均值或者少数 服从多数 原则来 决定集成的结果的。

        ② n_estimators 参数对 随机森林模型的 精确性影响是 单调的,n_estimators 越大,模型的效果 往往越好。但是相应的,任何模型 都有决策边界,n_estimators达到一定的程度之后,随机森林的 精确性往往 不在上升 或 开始波动,并且,n_estimators 越大,需要的 计算量和 内存也越大,训练的时间 也会越来越长。

        ③ 当 random_state固定时,随机森林中生成是 一组固定的树,但 每棵树依然是 不一致的,这是 用随机挑选特征 进行分枝 的方法得到的 随机性。并且可以证明,当这种随机性越大 的时候,袋装法的效果 一般会越来越好。用 袋装法集成时,基分类器 应当是 相互独立的,是不相同的。

        ④ 袋装法 是通过 有放回的 随机抽样技术 来形成不同 的训练数据。在 使用随机森林时,我们 可以不划分 测试集和训练集,只需要 用袋外数据来 测试我们的 模型即可。(即控制 oob_score参数

        ⑤ 当 n 和 n_estimators 都不够大 的时候,很可能 就没有 数据掉 落在袋外,自然也就无法使用 oob 数据来 测试模型了。

        ⑥ 在使用 袋装法时 要求基评估器 要尽量独立。其次还有 另一个必要条件:基分类器的判断准确率至少要超过随机分类器,即,基分类器的判断准确率至少要超过 50%。

三、测试代码

1. ensemble.RandomForestClassifier

from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 实例化数据集
data = load_breast_cancer()

rfc = RandomForestClassifier(criterion='gini', 
                             n_estimators=72, 
                             random_state=90, 
                             max_depth=8, 
                             min_samples_split=2, 
                             max_features=22
                            )
rfc = rfc.fit(data.data, data.target)
score = cross_val_score(rfc, data.data, data.target, cv=10).mean()
print(score)

2. ensemble.RandomForestRegressor

# 导入波士顿房价数据集
import pandas as pd
import numpy as np
data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
target = raw_df.values[1::2, 2]

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import cross_val_score

rfr = RandomForestRegressor(n_estimators=100, random_state=90)
score = cross_val_score(rfr, data, target, scoring='neg_mean_squared_error', cv=5).mean()
print(score)

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

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

相关文章

【Linux】centos7安装PHP7.4报错:libzip版本过低

问题描述 configure: error: Package requirements (libzip > 0.11 libzip ! 1.3.1 libzip ! 1.7.0) were not met: checking for libzip > 0.11 libzip ! 1.3.1 libzip ! 1.7.0... no configure: error: Package requirements (libzip > 0.11 libzip ! 1.3.1 libzi…

DAMA学习笔记(五)-数据存储和操作

1.引言 数据存储与操作包括对存储数据的设计、实施和支持,最大化实现数据资源的价值,贯穿于数据创建/获取到处置的整个生命周期。 数据存储与操作包含两个子活动(图6-1)。 图6-1 语境关系图:数据存储与操作 (1) 数据库…

分布式系统—Ceph块存储系统(RBD接口)

目录 一、服务端操作 1 创建一个名为 rbd-xy101 的专门用于 RBD 的存储池 2 将存储池转换为 RBD 模式 3 初始化存储池 4 创建镜像 5 管理镜像 6.Linux客户端使用 在管理节点创建并授权一个用户可访问指定的 RBD 存储池 ​编辑修改RBD镜像特性,CentOS7默认情…

英特尔CPU研发团队繁忙的一天

早晨:准备与启动 7:00 AM - 起床与准备 研发团队的工程师们早早起床,快速洗漱并享用健康的早餐。部分工程师会进行晨间锻炼,保持头脑清醒和身体活力。 8:00 AM - 到达办公室 工程师们来到位于硅谷的英特尔总部,进入研发中心。…

Open-TeleVision——通过VR沉浸式感受人形机器人视野的远程操作

前言 7.3日,我司大模型机器人(具身智能)线下营群里的一学员发了《Open-TeleVision: Teleoperation with Immersive Active Visual Feedback》这篇论文的链接,我当时快速看了一遍,还是有价值的一个工作(其有受mobile aloha工作的启发)&#x…

MT6816磁编码IC在工控机器人中的应用

在现代工业自动化领域,高精度的位置检测和控制技术对于机器人系统的稳定运行至关重要。MT6816磁编码IC作为一款先进的磁传感器解决方案,以其卓越的性能和稳定性,在工控机器人中得到了广泛的应用。本文将详细探讨MT6816磁编码IC在工控机器人中…

git常用命令及git分支

git常用命令及git分支 git常用命令设置用户签名初始化本地库查看本地库状态将文件添加到暂存区提交到本地库查看历史记录版本穿梭 git分支什么是分支分支的好处分支的操作查看分支创建分支切换分支删除分支合并分支合并冲突 git常用命令 设置用户签名 //设置用户签名 git con…

Golang:数据科学领域中的高性能并发编程新星

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 并发性能的卓越表现📝 系统级工具的便捷性📝 语言设计的简洁性📝 强类型系统的严格性📝 版本兼容性的稳定性📝 内置工具的全面性⚓️ 相关链接 ⚓️📖 介绍 📖 在数据科学和机器学习的广阔天地…

音视频开发—使用FFmpeg从纯H264码流中提取图片 C语言实现

文章目录 1.H264码流文件解码流程关键流程详细解码流程详细步骤解析 2.JPEG编码流程详细编码流程详细步骤解析 3.完整示例代码4.效果展示 从纯H.264码流中提取图片的过程包括解码和JPEG编码两个主要步骤,以下是详细阐述 1.H264码流文件解码流程 关键流程 查找编解…

微信小程序---分包加载

一、分包加载 1. 什么是分包加载 什么是分包加载 ❓ 小程序的代码通常是由许多页面、组件以及资源等组成,随着小程序功能的增加,代码量也会逐渐增加,体积过大就会导致用户打开速度变慢,影响用户的使用体验。 分包加载是一种小…

线性代数|机器学习-P23梯度下降

文章目录 1. 梯度下降[线搜索方法]1.1 线搜索方法,运用一阶导数信息1.2 经典牛顿方法,运用二阶导数信息 2. hessian矩阵和凸函数2.1 实对称矩阵函数求导2.2. 线性函数求导 3. 无约束条件下的最值问题4. 正则化4.1 定义4.2 性质 5. 回溯线性搜索法 1. 梯度…

nodejs模板引擎(一)

在 Node.js 中使用模板引擎可以让您更轻松地生成动态 HTML 页面,通过将静态模板与动态数据结合,您可以创建可维护且易于扩展的 Web 应用程序。以下是一个使用 Express 框架和 EJS 模板引擎的基本示例: 安装必要的依赖: 首先&#…

(四)stm32之通信协议

一.串口通信 1、全双工、半双工、单工 单工:只能一个人传输,只能向一个方向传输 半双工:只能一个人传输,可以多个方向传输 全双工:多方传输,多个方向传输 2、同步通信、一步通信 异步通信:双方时钟可以不同步,发送的信息封装(加上起始位、停止位)实现同步,效率低,…

生成式AI推动药物发现革命:加速开发,降低成本

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Ubuntu 22.04.4 LTS (linux) Auditd 安全审计rm命令 记录操作

1 audit增加rm 规则 #sudo vim /etc/audit/rules.d/audit.rules -w /bin/rm -p x -k delfile #重新启动服务 sudo systemctl restart auditd #查看规则 sudo auditctl -l -w /bin/rm -p x -k delfile 2 测试规则 touch test.txt rm test.tx 3 查看日志 sudo ausear…

LDAPWordlistHarvester:基于LDAP数据的字典生成工具

关于LDAPWordlistHarvester LDAPWordlistHarvester是一款功能强大的字典列表生成工具,该工具可以根据LDAP中的详细信息生成字典列表文件,广大研究人员随后可以利用生成的字典文件测试目标域账号的非随机密码安全性。 工具特征 1、支持根据LDAP中的详细信…

liunx笔记1

线程池的基本概念是,在应用程序启动时创建一定数量的线程,并将它们保存在线程池中。当需要执行任务时,从线程池中获取一个空闲的线程,将任务分配给该线程执行。当任务执行完毕后,线程将返回到线程池,可以被…

【RNN练习】天气预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、环境及数据准备 1. 我的环境 语言环境:Python3.11.9编译器:Jupyter notebook深度学习框架:TensorFlow 2.15.0 2. 导…

手机和电脑通过TCP传输

一.工具 手机端:网络调试精灵 电脑端:野火网络调试助手 在开始通信之前,千万要查看一下电脑的防火墙是否关闭,否则可能会无法通信 在开始通信之前,千万要查看一下电脑的防火墙是否关闭,否则可能会无法通信…

浅析Kafka Streams消息流式处理流程及原理

以下结合案例&#xff1a;统计消息中单词出现次数&#xff0c;来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…