【机器学习】随机森林算法(看我以弱博强)

news2024/10/11 15:25:21

目录

算法引入:

算法介绍:

1. 集成学习:

2. 训练过程:

3. 分类和回归:

算法优点:

算法缺点:

算法实现:

1. 数据准备

2. 划分数据集

3. 创建随机森林模型

4. 训练模型

5. 预测

6. 评估模型

完整代码示例


人工智能领域在当今可谓炙手可热,在人工智能与机器学习领域,随机森林(Random Forest)是一种集成学习方法,它通过构建多个决策树来进行分类或回归预测。随机森林的核心思想是“集思广益”,即通过组合多个模型来提高预测的准确性和鲁棒性。以最终达到以弱博强的目的。

算法引入:

俗话说“三个臭皮匠顶个诸葛亮”,有一天班里要进行考试,班里有一名学霸,科目有语数外三门学科,学霸呢,每一科语数外都能考到95+,班里还有三名偏科学渣A、B、C,学生A呢语文能考100分,学生B呢,数学能考100分,学生C呢,英语能考100分,但是学生A、B、C的其他两门学科都不及格,学霸说:你们三个垃圾,你们都是战五渣,学生A、B、C很不服,想挫一挫学霸的锐气,但是他们每一个人成绩都没有学霸的成绩高,于是学生A、B、C想了一个办法,如果让学生A去做语文卷子、学生B去做数学卷子、学生C去做英语卷子,这样可以直接碾压学霸,毫无悬念的A、B、C以总成绩300分拿下学霸,这种以弱博强的算法思想就是随机森林算法。


算法介绍:

随机森林(Random Forest)是一种集成学习方法,它通过构建多个决策树来进行分类或回归预测。随机森林的核心思想是“集思广益”,即通过组合多个模型来提高预测的准确性和鲁棒性。从算法的名字来看,随机就是随机选取,这个具有不确定性,可能是在一个群体里面选一部分,森林则是由很多树构成,树呢在机器学习领域有一种叫决策树,随机森林就是通过很多决策树构成,决策树可以看一下我的这一篇博客:【机器学习】决策树算法-CSDN博客

1. 集成学习:

随机森林是一种集成学习方法,它结合了多个决策树的预测结果。首先我们要有很多决策树组成的随机森林,根据这个随机森林的结果,我们去预测一个新决策树的结果。

2. 训练过程:

自助采样:在构建每棵树时,随机森林使用自助采样(bootstrap sampling)从原始数据集中抽取样本,这意味着同一样本可能被多次抽取,而某些样本可能一次也不被抽取,这些自助采样都是随机选取的,带有不确定性。比如在下图中,我们有星星、云朵、星球、棒棒糖、猫咪、爱心图标,我们这些是随机选取、自助采样,可能会有重合的比如下图中(2,4)坐标,那么有一个新的事物我们可以根据选取的这样事物进行预测新事物的结果。
特征选择:在每个决策节点,随机森林不是考虑所有特征,而是随机选择一部分特征进行最佳分割点的搜索,例如:下图中每一个事物不是以整体作为单位去考虑的,而是随机选取了一部分。

3. 分类和回归:

分类:对于分类问题,每棵树会给出分类结果,随机森林通过多数投票法决定最终的分类。
回归:对于回归问题,每棵树会给出预测值,随机森林通过取这些预测值的平均值作为最终预测。


算法优点:

   - 模型随机性强,不易overfit,抗噪性强,表示对异常点outlier不敏感,具有很高的准确率。
   - 处理高维数据相对较快。
   - 树状结构,模型可解释度高,可以告诉你每个特征的重要性。

算法缺点:

   - 模型往往过于general,不具备正确处理过于困难的样本的能力。
   - 模型起点高,但是天花板低。

参数:
   - n_estimators:森林中树的数量。
   - max_features:寻找最佳分割时要考虑的特征数量。
   - max_depth:树的最大深度。
   - min_samples_split:分裂内部节点所需的最小样本数。
   - min_samples_leaf:叶节点所需的最小样本数。


算法实现:

随机森林算法的具体实现涉及到多个步骤,包括数据准备、模型训练、预测以及评估。下面我将详细介绍这些步骤,并提供一个完整的Python代码示例,使用scikit-learn库来实现随机森林算法。

1. 数据准备

首先,我们需要准备数据集。这里我们使用鸢尾花数据集(Iris dataset),这是一个常用的分类数据集。

2. 划分数据集

将数据集划分为训练集和测试集,以便在训练集上训练模型,并在测试集上评估模型的性能。

3. 创建随机森林模型

使用scikit-learn库中的RandomForestClassifier或RandomForestRegressor来创建随机森林模型。

4. 训练模型

使用训练集数据训练模型。

5. 预测

使用训练好的模型对测试集进行预测。

6. 评估模型

计算模型的准确率或其他评估指标,如均方误差。

完整代码示例

下面是一个按照上面所说的步骤,进行写完整的Python代码示例

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import numpy as np

# 加载数据集 使用load_iris函数加载鸢尾花数据集
iris = load_iris()
X, y = iris.data, iris.target

# 划分训练集和测试集 使用train_test_split函数将数据集划分为训练集和测试集,测试集占30%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建随机森林分类器 实例化RandomForestClassifier,设置树的数量为100
rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)

# 训练模型 使用训练集数据训练模型
rf_classifier.fit(X_train, y_train)

# 预测测试集 使用训练好的模型对测试集进行预测
y_pred = rf_classifier.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")

# 打印特征重要性 
feature_importances = rf_classifier.feature_importances_
print("Feature importances:")
for feature, importance in zip(iris.feature_names, feature_importances):
    print(f"{feature}: {importance:.2f}")

# 可视化特征重要性 使用Matplotlib库绘制特征重要性的条形图
import matplotlib.pyplot as plt
features = iris.feature_names
indices = np.argsort(feature_importances)
plt.title("Feature Importances")
plt.barh(range(len(indices)), feature_importances[indices], color="r", align="center")
plt.yticks(range(len(indices)), [features[i] for i in indices])
plt.xlabel("Relative Importance")
plt.show()

这个示例展示了如何使用随机森林算法进行分类任务,并评估模型的性能。你可以根据具体需求调整数据集、模型参数和评估指标。


随机森林是一种非常强大的机器学习算法,适用于处理各种复杂的数据集和预测任务。随机森林算法因其准确性和易用性而受到广泛应用,在·分类问题、回归问题、特征选择、数据降维等方面应用很广泛。执笔至此,感触彼多,全文将至,落笔为终,感谢各位的支持。 

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

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

相关文章

Kubesphere4.1版本创建应用Mysql并实现外网访问

目前Kubesphere4.1版本可查创建应用资料较少,特此记录作为参考。 目标 使用Kubesphere4.1完成Mysql服务部署并实现外网访问。 具体流程如下: 1.创建企业空间 2.创建项目 3.创建应用仓库 4.创建应用(mysql) 5.配置外网访…

抖去推--短视频矩阵系统源码对外资料包

#短视频矩阵系统源码# #短视频矩阵系统源码开发# #短视频矩阵系统源码打包# 一、短视频矩阵系统源码安装 安装环境 短视频矩阵系统源码需要以下环境: PHP 7.0 及以上 MySQL 5.5 及以上 Nginx / Apache Redis FFMpeg 下载源码 从官网下载最新版本的短视频矩阵系统…

浅谈云原生--微服务、CICD、Serverless、服务网格

往期推荐 浅学React和JSX-CSDN博客 一文搞懂大数据流式计算引擎Flink【万字详解,史上最全】-CSDN博客 一文入门大数据准流式计算引擎Spark【万字详解,全网最新】_大数据 spark-CSDN博客 目录 1. 云原生概念和特点 2. 常见云模式 3. 云对外提供服务的…

【linux】麒麟v10安装prometheus监控(ARM架构)

Prometheus介绍 Prometheus 是一个开源的系统监控和警报工具包,最初由 SoundCloud 开发,现在是一个独立的开源项目,并且是云原生计算基金会(CNCF)的一部分。Prometheus 以其强大的数据模型和灵活的查询语言&#xff0…

线下餐厅自主点餐或外卖配送小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 线下餐厅自主点餐或外卖配送小程序源码系统是一款专为餐饮行业打造的智能化解决方案。它融合了自主点餐、外卖配送、订单管理、数据分析等多种功能,为餐厅提供了一站式的服务平台。通过该系统,餐厅可以实现线上线下一体化运营,提高工…

猿人学 — 第1届第3题(解题思路附源码)

猿人学 — 第1届第3题 翻页发现一共有两个请求 第一个请求:返回状态码为202(服务器已经接收请求,但尚未处理),响应头中还有一个Set-Cookie 第二个请求:返回了我们想要的数据,携带的Payload中…

基于M芯片MAC系统的hadoop、zookeeper、hbase安装

hadoop、zookeeper、hbase安装 1. vmware配置 搜索:“vmware for mac”,购买正版并下载,或通过其他渠道下载均可 随机掉落的奇怪链接 2. 下载镜像并安装虚拟机 bug记录1 此处选用ubuntu的20以及24,分别出现无法加载安装程序、…

会话管理:深入理解SQLAlchemy会话及其事务处理

引言 SQLAlchemy是一个流行的Python SQL工具包和对象关系映射(ORM)系统,它提供了一个高层的ORM以及底层的SQL表达式语言。在SQLAlchemy中,会话(Session)是与数据库交互的核心概念,它不仅负责对…

外卖配送小程序源码系统 带源代码包以及搭建部署教程

系统概述 外卖配送小程序源码系统是一套完整的解决方案,旨在帮助用户快速搭建自己的外卖配送平台。它融合了先进的技术和创新的设计理念,为用户提供了一个稳定、高效、易用的系统环境。 该系统基于移动端开发,能够与各种操作系统兼容&#…

2.stm32 GPIO输出

GPIO简介 GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式 引脚电平:0V~3.3V,部分引脚可容忍5V 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 …

网络变压器的作用是什么

在网络通讯主板上,在PHY芯片与RJ45连接器之间,会有一个黑属的小方块,这个东西就叫网络变压器,书名"数据录”人们常把它称为网络隔真变压务,LAN变压客,局域网变压器,滤波器等。 它在一块网络设备接口上所起的作用主要有两个; 一、传输数据,它把PHY送出来的差分信号用差模合…

电子元器件是电子电路中的基本组成部分

电子元器件是电子电路中的基本组成部分,主要包括以下几类: 一、电阻器 作用 限流:限制电路中的电流大小。分压:将电压按照一定比例分配。负载:作为电路中的负载元件。 分类 固定电阻:阻值固定不变。可变电阻…

ros1编译wpr_simulation库

目录 安装项目依赖包编译将环境参数加载到终端程序中运行编译好的ros程序 首先你下载好这个库以后。 安装项目依赖包 scripts库中,存放的是一些依赖项安装脚本以及python脚本。 进入到这个路径的终端。 输入 ./install_for_noetic.sh编译 输入下面命令&#xf…

小猿口算自动PK脚本

大家好,我是小黄。 近期,众多大学生炸鱼小猿口算APP,把一众小学生都快虐哭了,小黄听闻后,也跃跃欲试。对此小黄也参考网上的资料写了一个自动Pk的脚步。 首先大家需要安装一个pytorch环境过程中,如果小伙伴对此不熟悉的…

【YOLOv11】ultralytics最新作品yolov11 AND 模型的训练、推理、验证、导出 以及 使用

​目录 一 ultralytics公司的最新作品YOLOV11 1 yolov11的创新 2 安装YOLOv11 3 PYTHON Guide 二 训练 三 验证 四 推理 五 导出模型 六 使用 文档:https://docs.ultralytics.com/models/yolo11/ 代码链接:https://github.com/ultralytics/ult…

MyBatis 用法详解

文章目录 一、普通 SQL1.1 注解实现:1.1.1 参数传递:1.1.2 增(Insert):1.1.3 删(Delete):1.1.4 改(Update):1.1.5 查(Select&#xff…

大疆M2006+C610 pid参数调优

官方给的示例代码里给的是1.5, 0.1, 0 但试了下空转时显然不太行. 自己摸索出0.8, 0.03, 0 表现如图中的蓝色线 期望速度先两秒的1000,然后一秒的2000,一秒的3000, 0 2000 表现还不错,可以看到0.5秒后与期望值的差距控制在大概10%之内,但还是感觉有些过调 对了先说一下基础知识…

UnityComputeShader Challenge2

UnityComputeShader Challenge2 大部分内容与Challenge1中的一致,重复的地方不做说明 using UnityEngine; using System.Collections;public class Challenge2 : MonoBehaviour {public ComputeShader shader;//纹理的分辨率,正方形public int texReso…