2024美赛算法预测-1一个强大算法模型,随机森林!!

大家好,今儿咱们来说说关于随机森林的一些核心点~

首先,随机森林是一种集成学习方法,通过组合多个决策树来进行预测。每个决策树都是在不同的数据子集上训练的,同时引入了随机性,使得每棵树都有差异。

最终的预测结果是通过对所有树的预测结果进行平均或投票得到。

基本决策树

随机森林的基础是决策树。决策树是一种树状结构,每个节点表示一个特征,每个叶子节点表示一个类别或一个数值。学习过程是递归的,根据选择的特征将数据划分成子集,直到达到停止条件。

随机性引入

  • 随机抽样: 针对每个决策树的训练集,从原始数据集中进行随机抽样(有放回抽样),形成不同的训练子集。这使得每棵树的训练集都是略有不同的。

  • 随机特征选择: 在每次决策树的节点划分时,随机选择一个特征进行划分。这防止了某个特定特征对模型的过度依赖。

Bootstrap Aggregating (Bagging)

  • 针对每个随机抽样得到的训练子集,训练一个独立的决策树。

  • 预测时,对所有决策树的输出取平均(回归问题)或进行投票(分类问题)。

预测

  • 对于回归问题,将所有决策树的预测结果取平均。

  • 对于分类问题,进行投票,选择得票最多的类别作为最终预测。

随机森林核心公式:

对于回归问题:

对于分类问题:

其中:

  •  是随机森林的预测结果。

  •  是随机森林中决策树的数量。

  •  是第  棵决策树的预测结果。

  •  是指示函数。

一个核心代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor# 生成随机数据集
rng = np.random.RandomState(1)
X = np.sort(200 * rng.rand(600, 1) - 100, axis=0)
y = np.pi * np.sin(X).ravel() + 0.5 * rng.rand(600)# 创建随机森林模型
n_trees = 100
max_depth = 30
regr_rf = RandomForestRegressor(n_estimators=n_trees, max_depth=max_depth, random_state=2)
regr_rf.fit(X, y)# 生成新数据进行预测
X_test = np.arange(-100, 100, 0.01)[:, np.newaxis]
y_rf = regr_rf.predict(X_test)# 绘制结果
plt.figure(figsize=(10, 6))
plt.scatter(X, y, edgecolor="k", c="navy", s=20, marker="o", label="Data")
plt.plot(X_test, y_rf, color="darkorange", label="Random Forest Prediction", linewidth=2)
plt.xlabel("Input Feature")
plt.ylabel("Target")
plt.title("Random Forest Regression")
plt.legend()
plt.show()

这段代码创建了一个包含随机噪声的正弦波形数据集,然后使用随机森林回归模型进行拟合,并在图中展示了拟合结果。

 

随机森林通过引入随机性和集成多个决策树的预测结果,提高了模型的泛化能力和鲁棒性。它适用于回归和分类问题,并在处理高维数据、大规模数据集和复杂任务时表现良好。

然而,需要注意过多的树可能导致过拟合,而较少的树可能导致欠拟合。在实际应用中,调整超参数(如树的数量和深度)是调整模型性能的关键。

最后

每天一个简单通透的小案例,如果你对类似于这样的文章感兴趣。

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

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

相关文章

transformer架构的理解

一、transformer 架构 如上图所示,transformer(形状像变压器?或者翻译成变形金刚,由不同模块拼装而成)的架构左边是n个结构体相同的编码器(例如,原论文是6个编码器的串联)&#xff0…

动网格-网格重构之铺层(三)

铺层 本文章详细介绍FLUENT动态网格体网格再生方法铺层法。 铺层基本特点: (1)铺层过程中包含了网格的生成和销毁。当区域扩大时,生成网格;缩小时,销毁网格。 (2)适用网格种类:四边形、六面体、三棱柱(网格的分布要服从一定的规则)。 (3)铺…

使用cmake配置opencv c++项目

1、cmake简介 cmake是什么 CMake是一个开源、跨平台的编译(Build)工具,是用来构建、测试和打包软件的。它能够用简单的语句来描述所有平台的编译过程。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C特性,类…

Day02-课后练习2-参考答案(数据类型和运算符)

文章目录 巩固题1、案例:今天是周2,100天以后是周几?2、案例:求三个整数x,y,z中的最大值3、案例:判断今年是否是闰年4、分析如下代码的计算结果5、分析如下代码的计算结果6、分析如下代码的计算结果7、分析如下代码的计…

最新即时通讯社交APP源码 支持H5群聊、红包转账和朋友圈

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买) 功能简介 我们的即时通讯应用提供了完备的IM功能,支持文字、表情、图片、语音等多种聊天方式,包括单聊、群聊、已读…

不是能画原型就叫会“快速原型”的,好吗?

原型设计作为当前软件、互联网行业最有效的信息传达方式之一,是所有产品经理、交互设计师、UX设计师必须掌握的技能。掌握原型设计同样也是UI设计师、开发工程师甚至运营、市场人员提高自身竞争力的加分项。并且,学习原型设计的难度低,上手快…

【算法专题】贪心算法

贪心算法 贪心算法介绍1. 柠檬水找零2. 将数组和减半的最少操作次数3. 最大数4. 摆动序列(贪心思路)5. 最长递增子序列(贪心算法)6. 递增的三元子序列7. 最长连续递增序列8. 买卖股票的最佳时机9. 买卖股票的最佳时机Ⅱ(贪心算法)10. K 次取反后最大化的数组和11. 按身高排序12…

Ajax入门与使用

目录 ◆ AJAX 概念和 axios 使用 什么是 AJAX? 怎么发送 AJAX 请求? 如何使用axios axios 函数的基本结构 axios 函数的使用场景 1 没有参数的情况 2 使用params参数传参的情况 3 使用data参数来处理请求体的数据 4 上传图片等二进制的情况…

Linux操作系统权限相关问题(一站式速通权限)

一、sudo命令 sudo yum install -y sl sudo命令的作用 不切换用户,就想让普通用户以root的身份,执行对应的指令 输入密码时,输入的是自己普通用户的密码,而不是root的密码!!! sudo可以进行…

React 面试题

1、组件通信的方式 父组件传子组件:通过props 的方式 子组件传父组件:父组件将自身函数传入,子组件调用该函数,父组件在函数中拿到子组件传递的数据 兄弟组件通信:找到共同的父节点,用父节点转发进行通信 …

翻译: GPT-4 Vision通过量身定制的推荐来增强应用的用户体验 升级Streamlit五

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…

人工智能(pytorch)搭建模型23-pytorch搭建生成对抗网络(GAN):手写数字生成的项目应用

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型23-pytorch搭建生成对抗网络(GAN):手写数字生成的项目应用。生成对抗网络(GAN)是一种强大的生成模型,在手写数字生成方面具有广泛的应用前景。通过生成…