随机森林简单回归预测

article/2025/10/3 6:49:10

随机森林(RandomForest)简单回归预测

随机森林是bagging方法的一种具体实现。它会训练多棵决策树,然后将这些结果融合在一起就是最终的结果。随机森林可以用于分裂,也可以用于回归。主要在于决策树类型的选取,根据具体的任务选择具体类别的决策树。

对于分类问题,一个测试样本会送到每一颗决策树中进行预测,然后投票,得票最多的类为最终的分类结果;

对于回归问题,随机森林的预测结果是所有决策树输出的均值。

本文介绍利用随机森林进行时间序列的简单回归预测,满足大部分科研需求。

介绍

随机森林的优点:

在数据集上表现良好,两个随机性的引入,使得随机森林不容易陷入过拟合,但是对于小数据集还是有可能过拟合,所以还是要注意;

两个随机性的引入,使得随机森林具有很好的抗噪能力;

它能够处理很高维的数据,并且不用做特征选择,对数据集的适应能力强。既能处理离散性数据,也能处理连续型数据,数据集无需规范化;

在创建随机森林的时候,对generalization error使用的是无偏估计;

训练速度快,可以得到变量重要性排序;

在训练过程中,能够检测到feature间的互影响;

容易做成并行化方法;

实现比较简单

随机森林的缺点:

对于小数据集和低维的数据效果可能不是很好。

整个模型为黑盒,没有很强的解释性。

由于随机森林的两个随机性,导致运行结果不稳定。

数据准备

安装所需要的py库

pip install sklearn

导入所需要的包

import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.multioutput import MultiOutputRegressor

​单输出回归

预测给定输入的单个数字输出。

随机构建训练集和测试集

rng = np.random.RandomState(1)
X = np.sort(200 * rng.rand(600, 1) - 100, axis=0)
y = np.array([np.pi * np.sin(X).ravel()]).T
y += (0.5 - rng.rand(*y.shape))
#x和y的shape为(600, 1) (600, 1)
​
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=400, test_size=200, random_state=4)
#X_train, X_test, y_train, y_test的shape
#为(400, 1) (200, 1) (400, 1) (200, 1)

构建模型并进行预测

#定义模型
regr_rf = RandomForestRegressor(n_estimators=100, max_depth=30,random_state=2)
# 集合模型
regr_rf.fit(X_train, y_train)
# 利用预测
y_rf = regr_rf.predict(X_test)
#评价
print(regr_rf.score(X_test, y_test))

作图

plt.figure()
s = 50
a = 0.4
plt.scatter(X_test, y_test, edgecolor='k',c="navy", s=s, marker="s", alpha=a, label="Data")
​
plt.scatter(X_test, y_rf, edgecolor='k',c="c", s=s, marker="^", alpha=a,label="RF score=%.2f" % regr_rf.score(X_test, y_test))
plt.xlim([-6, 6])
​
plt.xlabel("X_test")
plt.ylabel("target")
plt.title("Comparing random forests and the test")
plt.legend()
plt.show()

多输出回归

根据输入预测两个或多个数字输出。

随机构建训练集和测试集,这里构建的是一个x对应两个y

rng = np.random.RandomState(1)
X = np.sort(200 * rng.rand(600, 1) - 100, axis=0)
y = np.array([np.pi * np.sin(X).ravel(), np.pi * np.cos(X).ravel()]).T
y += (0.5 - rng.rand(*y.shape))
#x和y的shape为(600, 1) (600, 2)
​
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=400, test_size=200, random_state=4)
#X_train, X_test, y_train, y_test的shape
#为(400, 1) (200, 2) (400, 1) (200, 2)

构建模型并进行预测

这里尝试了利用随机森林和包装器类两种方法

#定义模型
max_depth = 30
regr_multirf = MultiOutputRegressor(RandomForestRegressor(n_estimators=100,                                                       max_depth=max_depth,                                                      random_state=0))
# 拟合模型
regr_multirf.fit(X_train, y_train)
​
#定义模型
regr_rf = RandomForestRegressor(n_estimators=100, max_depth=max_depth,random_state=2)
# 拟合
regr_rf.fit(X_train, y_train)
​
#预测
y_multirf = regr_multirf.predict(X_test)
y_rf = regr_rf.predict(X_test)

作图

plt.figure()
s = 50
a = 0.4
plt.scatter(y_test[:, 0], y_test[:, 1], edgecolor='k',c="navy", s=s, marker="s", alpha=a, label="Data")
plt.scatter(y_multirf[:, 0], y_multirf[:, 1], edgecolor='k',c="cornflowerblue", s=s, alpha=a,label="Multi RF score=%.2f" % regr_multirf.score(X_test, y_test))
plt.scatter(y_rf[:, 0], y_rf[:, 1], edgecolor='k',c="c", s=s, marker="^", alpha=a,label="RF score=%.2f" % regr_rf.score(X_test, y_test))
plt.xlim([-6, 6])
plt.ylim([-6, 6])
plt.xlabel("target 1")
plt.ylabel("target 2")
plt.title("Comparing random forests and the multi-output meta estimator")
plt.legend()
plt.show()

 欢迎关注vx公众号遥感迷,更多东西静待发布


http://chatgpt.dhexx.cn/article/c9MQ2QHZ.shtml

相关文章

【机器学习项目实战】随机森林(random forest)回归(RandomForestRegressor)模型Python实现

说明:这是一个机器学习实战项目(附带数据代码),如需数据完整代码可以直接到文章最后获取。 1.定义问题 在电子商务领域,现在越来越多的基于历史采购数据、订单数据等,进行销量的预测;本模型也是…

用Python实现随机森林回归

1 介绍 使用Scikit-Learn模块在Python实现任何机器学习算法都比较简单,并且不需要了解所有细节。这里就对如何进行随机森林回归在算法上进行概述,在参数上进行详述。希望对你的工作有所帮助。 这里,将介绍如何在Python中构建和使用Random Fo…

DS和[address]

8086CPU中,用16位寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节。在内存中存储时,由于内存单元是字节单元,则一个字要用两个地址连续的内存单元来存放,这个字的低位存放低地址单元中,高位字节存…

a's'da's'd

1:原理ffmpeg读取出来一个包如果是视频包放入视频包队列,如果是音频包放入音频包队列。视频:从视频队列中取出一个包解码根绝帧率或pts等等算出一帧数据的持续时间将这一帧数据放入VideoPicture这个结构体的bmp中,这只是内存,还未…

微信公众号内置浏览器缓存清理

微信公众号的H5页面访问后,会缓存js、css等数据,如果更新了脚本文件,前端一段时间内容反复刷新都无法生效。 使用过程中,更新代码但是H5不能及时更新,推荐以下几种方式: 方法一: 微信->“我…

微信浏览器缓存清理

微信其实内嵌了一个QQ浏览器,只是这个浏览器没有菜单界面,看上去无法清理微信内置浏览器的缓存。 方法一: 1、随便打开一个聊天窗口,输入debugx5.qq.com 并发送 2、点击自己发送的地址debugx5.qq.com,打开debug 调试…

Android手机微信内置浏览器缓存怎么清理?

有很多时候我们的网站需要在微信上打开进行测试,一次次的修改不像是浏览器一样可以随时清理缓存,不清理缓存的话这样会对测试运行结果有影响,那如何清理缓存呢? 注意:此功能只能适用于安卓微信 1、专门的清理缓存的网…

微信内置浏览器清理缓存方法(适用于安卓手机)

用微信内置浏览器打开这个网页debugx5.qq.com ,就会有清除缓存的选项,如下图

微信内置浏览器清除缓存、cookie、local storage清除(安卓手机)

项目需要做一个openIdADFS混合模式的登录,开发的时候发现点问题,需要清除cookie和local storage进行修改。 于是稍微研究了一下,安卓手机如何清除缓存、cookie和local storage。 本人使用的手机是华为Mate 20Pro,微信版本8.0.3.…

h5、微信浏览器、微信公众号清理缓存的常用方法

h5浏览器特别是微信公众号存在缓存的问题,让我们在测试、产品、用户面前彻底丢了面子,他们会问。为什么会有缓存?别人的产品可以做到,为什么我们的不可以? 下面提供几种方案可以尝试处理h5浏览器缓存的问题。 一、普…

清除微信浏览器缓存

转载自https://chenhuichao.com/2016/04/07/mobile/wechat-clean-cache/ 在做微信移动页面开发时,若需要清除缓存,对于Android和iOS平台的清除方法如下: iOS iOS的微信浏览器中自带刷新按钮。点击微信右上角的菜单->刷新,&am…

微信公众号开发,清除微信内置浏览器缓存

在做微信开发的时候(主要是微信内网页或者比较大型的手机网站)的时候,更改了页面代码,但是微信内置浏览器有缓存,还是之前的效果,影响调试,而且还死活清除不掉!!&#xf…

微信内置浏览器禁止缓存的问题

解决方案1&#xff1a; 调试阶段或者频繁更新的页面加入以下头信息&#xff1a; <meta http-equiv"Cache-Control" content"no-cache, no-store, must-revalidate" /> <meta http-equiv"Pragma" content"no-cache" /> &l…

微信内置浏览器缓存清理及关闭微信默认的X5内核

之前做过很多公众号的项目&#xff0c;项目写完后给客户看项目&#xff0c;客户一而再再而三的修改元素向左挪1px&#xff0c;向右挪2px。改好之后让客户看&#xff0c;客户说我特泽发克&#xff0c;你啥都没有修改&#xff0c;你竟然骗我&#xff01;&#xff01;&#xff01;…

微信内的浏览器缓存清理方法

安卓清除缓存方案&#xff1a; android版微信内置浏览器&#xff08;X5内核&#xff09; 在安卓版微信内打开链接 http://debugx5.qq.com 拉到调试页面的最底端&#xff0c;勾选上所有的缓存项目&#xff0c;点击清除。 苹果清除缓存方案&#xff1a; ios版微信内置浏览器&am…

解决微信浏览器缓存问题

微信浏览器处理缓存方式&#xff1a; 1.头部处理缓存信息。 <meta http-equiv"Cache-Control" content"no-cache, no-store, must-revalidate" /> <meta http-equiv"Pragma" content"no-c…

微信内置浏览器缓存清理

之前做过很多公众号的项目&#xff0c;项目写完后给客户看项目&#xff0c;客户一而再再而三的修改元素向左挪1px&#xff0c;向右挪2px。改好之后让客户看&#xff0c;客户说我特泽发克&#xff0c;你啥都没有修改&#xff0c;你竟然骗我&#xff01;&#xff01;&#xff01;…

h5清理微信浏览器网页缓存

前言&#xff1a; 缓存这个问题的出现&#xff0c;真真切切的感受到微信浏览器这鬼东西对前端程序员充满了恶意&#xff0c;捋捋自己的发型&#xff0c;甚是恐慌&#xff08;顿时有种想转php的冲动&#xff0c;有木有&#xff09;。 解决方案&#xff1a; 出现缓存问题导致用户…

清理微信浏览器网页缓存的办法

微信开发是件非常蛋疼的事情&#xff0c;微信网页的缓存是更加蛋疼的东西&#xff0c;今天遇到的问题&#xff1a;一个页面在web开发工具上可以正常授权并获取到openid&#xff0c;放在手机上就死活不行&#xff0c;网上找来的办法如下&#xff1a; 使用微信内置的浏览器打开“…

微信H5、网页、内置Web浏览器 清理缓存,微信浏览器缓存

目录 一、写在前面&#xff1a; 1、浏览器缓存带来的好处&#xff1a; 2、浏览器缓存带来的弊端&#xff1a; 二、如何清除微信浏览器的缓存&#xff1a; 1、在IOS环境下手动清除微信缓存&#xff1a; 2、在Android环境下手动清除微信缓存&#xff1a; 三、清除微信浏览…