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

article/2025/10/3 2:48:06

说明:这是一个机器学习实战项目(附带数据+代码),如需数据+完整代码可以直接到文章最后获取。

 

 1.定义问题

在电子商务领域,现在越来越多的基于历史采购数据、订单数据等,进行销量的预测;本模型也是基于电商的一些历史数据进行销量的建模、预测。

2.获取数据

本数据是模拟数据,分为两部分数据:

训练数据集:data_train.xlsx

测试数据集:data_test.xlsx

在实际应用中,根据自己的数据进行替换即可。

特征数据:x1、x2、x3、x4、x5、x6、x7、x8、x9、x10

标签数据:y

3.数据预处理 

1)数据描述性分析:

data_train.describe()

 2)数据完整性、数据类型查看:

data_train.info()

 3)数据缺失值个数:

4)缺失值数据比例:


 

 

5)缺失值填充:这里通过业务上分析:填充0比较合适:

 

 

6)哑变量处理

data_train.loc[data_train['x10'] == '类别1', 'x10'] = 1
data_train.loc[data_train['x10'] == '类别2', 'x10'] = 2
a = pd.get_dummies(data_train['x10'], prefix="x10")
frames = [data_train, a]
data_train = pd.concat(frames, axis=1)

特征变量中x10的数值为文本类型:类型1、类型2,不符合机器学习数据要求,需要进行哑特征处理,变为0 1数值。

处理后,数据如下:

 4.探索性数据分析

1)目标数据销量分析:

print(data_train['y'].describe())

 

 

 2)特征变量x1和标签变量y关系的散点图:

var = 'x1'
data = pd.concat([data_train['y'], data_train[var]], axis=1)
data.plot.scatter(x=var, y='y')

 3)特征变量x5和标签变量y关系的散点图:

var0 = 'x5'
data0 = pd.concat([data_train['y'], data_train[var0]], axis=1)
data0.plot.scatter(x=var0, y='y')

 

4)相关性分析

 

 5.特征工程 

1)特征数据和标签数据拆分,y为标签数据,除y之外的为特征数据;

2)训练集拆分,分为训练集和验证集,80%训练集和20%验证集;

特征工程还有很多其他内容,例如数据标准化、降维等等,这个根据实际情况来,本次建模不需要。

6.机器建模 

1)建立随机森林回归模型,模型参数如下:

编号

参数

1

n_estimators=100

2

random_state=1

3

n_jobs=-1

其它参数根据具体数据,具体设置。

forest = RandomForestRegressor(n_estimators=100,random_state=1,n_jobs=-1)
forest.fit(X_train, Y_train)

2)验证集结果输出与比对:一方面是生成excel表格数据;一方面是生成折线图。

plt.figure()
plt.plot(np.arange(1000), Y_validation[:1000], "go-", label="True value")
plt.plot(np.arange(1000), y_validation_pred[:1000], "ro-", label="Predict value")
plt.title("True value And Predict value")
plt.legend()

3)生成决策树

with open('./wine.dot','w',encoding='utf-8') as f:f=export_graphviz(pipe.named_steps['regressor'].estimators_[0], out_file=f)

由于树比较多 一下子全部转为图片 导致图片看不清晰,所以生成的格式为.dot格式,大家可以根据具体需要把dot转为图片。

不分展示:总共200多页。

7.模型评估

1)评估指标主要采用准确率分值、MAE、MSE、RMSE

score = forest.score(X_validation, Y_validation)
print('随机森林模型得分: ', score)
print('Mean Absolute Error:', metrics.mean_absolute_error(Y_validation, y_validation_pred))
print('Mean Squared Error:', metrics.mean_squared_error(Y_validation, y_validation_pred))
print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(Y_validation, y_validation_pred)))

编号

评估指标名称

评估指标值

1

准确率分值

0.9769

2

MAE

9.9431

3

MSE

2625.5679

4

RMSE

51.2402

通过上述表格可以看出,此随机森林模型效果良好。

2)模型特征重要性:一方面是输出到excel;一方面是生成柱状图。

col = list(X_train.columns.values)
importances = forest.feature_importances_
x_columns = ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10_类别1', 'x10_类别2']
# print("重要性:", importances)
# 返回数组从大到小的索引值
indices = np.argsort(importances)[::-1]
list01 = []
list02 = []
for f in range(X_train.shape[1]):# 对于最后需要逆序排序,我认为是做了类似决策树回溯的取值,从叶子收敛# 到根,根部重要程度高于叶子。print("%2d) %-*s %f" % (f + 1, 30, col[indices[f]], importances[indices[f]]))list01.append(col[indices[f]])list02.append(importances[indices[f]])from pandas.core.frame import DataFramec = {"columns": list01, "importances": list02}
data_impts = DataFrame(c)
data_impts.to_excel('data_importances.xlsx')importances = list(forest.feature_importances_)
feature_list = list(X_train.columns)feature_importances = [(feature, round(importance, 2)) for feature, importance in zip(feature_list, importances)]
feature_importances = sorted(feature_importances, key=lambda x: x[1], reverse=True)import matplotlib.pyplot as pltx_values = list(range(len(importances)))
print(x_values)
plt.bar(x_values, importances, orientation='vertical')
plt.xticks(x_values, feature_list, rotation=6)
plt.ylabel('Importance')
plt.xlabel('Variable')
plt.title('Variable Importances')

8.实际应用

根据最近一周的特征数据,来预测销量(这里的数据,是提前准备好的没有标签的数据)。预测结果如下;

 

可以根据预测的销量进行备货。

本次机器学习项目实战所需的资料,项目资源如下:https://download.csdn.net/download/weixin_42163563/21093418


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

相关文章

用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; 三、清除微信浏览…

Spring AOP实现原理简介

AOP联盟标准 AOP联盟将AOP体系分为三层&#xff0c;从三层结构可以看出&#xff0c;AOP实现方式有很多种&#xff0c;包括反射、元数据处理、程序处理、拦截器处理等&#xff0c;通过本节学习&#xff0c;你就会看到Spring AOP的实现使用的是Java语言本身的特性&#xff0c;即J…