随机森林回归算法的Python实现与应用

这篇具有很好参考价值的文章主要介绍了随机森林回归算法的Python实现与应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要

    随机森林回归是一种集成学习算法,通过组合多个决策树来实现回归任务,构建多个决策树,并将它们组合成一个强大的回归模型。本文将会从随机森林回归算法的算法原理、Python实现及实际应用进行详细说明。

1 绪论

    在现在的数据分析及数学建模等竞赛中,机器学习算法的使用是很常见的,除了算法实现还需要对赛题或自己所获得的数据集进行数据预处理工作,本文默认读者的数据均已完成数据预处理部分。

2 材料准备

    Python编译器:PyCharm社区版或个人版等

    数据集:本文所使用的数据集样例如图2.1所示,如有需要,请私发笔者电子邮箱,获取元数据。

python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习

图2.1 数据集样例  

3 算法原理

        随机森林回归是一种集成学习算法,它通过组合多个决策树来实现回归任务,通过构建多个决策树,并将它们组合成一个强大的回归模型,具体步骤如下:

        Step 1:随机选择一个样本子集作为该决策树的训练集。

        Step 2:随机选择一部分特征(总特征数的平方根)作为该决策树的特征集。

        Step 3:基于训练集和特征集构建决策树,直到达到预定的叶子节点数或无法分割为止。

        Step 4:重复以上步骤,建立多颗决策树。

        Step 5:对于一个新的样本,将它输入到每棵决策树中,得到多个预测结果。

        Step 6:对多个预测结果进行平均,得到最终的预测结果。

        其算法公式基于决策树回归模型,每个决策树的预测函数可以表示为如公式(1)所示:

python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习

        式中:k表示第k棵决策树, python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习表示输入样本,python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习表示第python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习棵决策树的叶子节点数,python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习表示第python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习棵决策树第python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习个叶子节点的预测值,python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习表示第棵决策树第python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习叶子节点的样本集合。

        多棵决策树的预测函数可以表示为:

  python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习

        式中:Kpython 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习表示决策树的数量。

         在模型评估上,随机森林回归的常用指标包括均方误差(MSE)和R-squared(R2),一般来说,MSE的值越小,说明模型对数据的拟合程度越好,R2的值越接近于1,说明模型对数据的拟合程度越好,反之亦然。其计算公式如下:

python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习

        式中,python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习表示样本数量, python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习表示第 python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习个样本的真实值, python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习表示第 python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习个样本的预测值。

python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习

        式中: python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习表示所有样本真实值的平均值。

        其算法原理示意图如图3.1所示:

python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习

图3.1 随机森林回归原理示意图

 4 算法Python实现

  4.1 数据加载

        此处利用pandas库进行读取数据,第一列特征为目标变量,其余的列特征作为自变量。

import pandas as pd
# 读取数据
data = pd.read_excel('DataRFL.xlsx')
# 分割自变量和目标变量
X = data.iloc[:, 1:]
y = data.iloc[:, 0]

4.2 将数据集切分为训练集和测试集

        使用train_test_split函数对数据集进行切分,30%作为测试集,70%作为训练集。

from sklearn.model_selection import train_test_split
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

4.3 利用训练集进行模型训练

        利用70%的样本数据进行模型训练,即X_train和y_train,Python有随机森林回归的库,直接调用即可,简单实现自己的需求。

from sklearn.ensemble import RandomForestRegressor
# 训练模型
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)

4.4 结果预测

        本文使用30%测试集进行拟合,后文的拟合效果评估需要这一步,如果全部数据均是训练集,模型的拟合效果是说明不了的。

# 预测结果
y_pred = rf.predict(X_test)

4.5 模型评估

        机器学习回归不像是机器学习分类,机器学习分类算法的评估是通过准确率、精确率、召回率和F1-Score去评估,而回归算法的评估因子是通过均方差MSE和R方值进行说明的,这两者的评估原理和数值的说明如前文所述。

from sklearn.metrics import mean_squared_error, r2_score
# 计算MSE和R-squared
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

# 输出模型评估结果和目标方程
print('MSE:', mse)
print('R-squared:', r2)

4.6 目标方程的输出

        回归算法的模型是一条回归公式,其各特征的系数由特征重要性所决定。

# 输出目标方程
print("目标方程:")
for i, feature in enumerate(X.columns):
    print("{} * {} +".format(rf.feature_importances_[i], feature), end=' ')

4.7 绘制特征重要性条形图

        有一些题目需要确认影响该模型的关键因素或影响某物品的决定因素等,可以通过各特征在算法的重要性进行说明。

import matplotlib.pyplot as plt
# 绘制特征重要性条形图
feature_importance = rf.feature_importances_
feature_names = X.columns.tolist()
sorted_idx = feature_importance.argsort()
#避免中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.barh(range(len(feature_importance)), feature_importance[sorted_idx])
plt.yticks(range(len(feature_importance)), [feature_names[i] for i in sorted_idx],fontsize=5)
plt.xlabel('特征重要性')
plt.ylabel('特征名称')
plt.title('随机森林回归特征重要性')
plt.savefig('随机森林回归特征重要性',dpi=300)

4.8 结果输出

        控制台结果输出如图4.1所示,特征重要性条形图输出如图4.2所示。

python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习

 图4.1 结果输出

python 随机森林回归,机器学习,Python,python,随机森林,回归,机器学习

图4.3 特征重要性条形图

 4.9 结果说明

        在本文的拟合中,MSE为0.87,确实很小,说明模型对训练集数据的拟合效果非常好,但并不一定代表模型的泛化能力强,即能够对新的未见过的数据进行准确预测。

        R2的值是负值,说明模型对目标变量的解释能力比随机猜测还要差。R-squared的取值范围是0到1之间,越接近1表示模型对目标变量的解释能力越强,越接近0表示模型对目标变量的解释能力越弱,而如果是负数,则说明模型的表现不如随机猜测。

        所以本文所建立的模型是不适用的,应该考虑别的算法,或者思考自己的数据预处理是否有问题。

4.10 完整代码实现

import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

# 读取数据
data = pd.read_excel('附件0.2.xlsx')

# 分割自变量和目标变量
X = data.iloc[:, 1:]
y = data.iloc[:, 0]
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# 训练模型
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)

# 预测结果
y_pred = rf.predict(X_test)

# 计算MSE和R-squared
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

# 输出模型评估结果和目标方程
print('MSE:', mse)
print('R-squared:', r2)
# 输出目标方程
print("目标方程:")
for i, feature in enumerate(X.columns):
    print("{} * {} +".format(rf.feature_importances_[i], feature), end=' ')

# 绘制特征重要性条形图
feature_importance = rf.feature_importances_
feature_names = X.columns.tolist()
sorted_idx = feature_importance.argsort()

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.barh(range(len(feature_importance)), feature_importance[sorted_idx])
plt.yticks(range(len(feature_importance)), [feature_names[i] for i in sorted_idx],fontsize=5)
plt.xlabel('特征重要性')
plt.ylabel('特征名称')
plt.title('随机森林回归特征重要性')
plt.savefig('随机森林回归特征重要性',dpi=300)

5 算法应用

        随机森林回归算法可以应用于销售量的预测、房价的预测和股票价格的预测(股市有风险,入行需谨慎)等领域,具体可以阅读相关领域的文献。

6 结论

        本文对随机森林回归算法对原理说明、算法的Python实现及算法应用进行了简要的说明,文中给出了一个拟合效果不佳的模型进行示例,待日后有合适的训练数据再补充说明。

7 备注

        本文为原创文章,禁止转载,违者必究。如需原始数据,请点赞+收藏,然后私聊笔者或在评论区留下你的邮箱,即可获取原始数据一份。文章来源地址https://www.toymoban.com/news/detail-526345.html

到了这里,关于随机森林回归算法的Python实现与应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习算法:线性回归、逻辑回归、决策树和随机森林解析

    引言 机器学习算法是人工智能领域的核心,它们用于解决各种问题,从预测房价到图像分类。本博客将深入探讨四种常见的机器学习算法:线性回归、逻辑回归、决策树和随机森林。 线性回归 什么是线性回归? 线性回归是一种用于建立连续数值输出的机器学习模型的算法。

    2024年02月10日
    浏览(53)
  • Python实现Stacking回归模型(随机森林回归、极端随机树回归、AdaBoost回归、GBDT回归、决策树回归)项目实战

    说明:这是一个机器学习实战项目(附带 数据+代码+文档+视频讲解 ),如需 数据+代码+文档+视频讲解 可以直接到文章最后获取。 1.项目背景 Stacking通常考虑的是异质弱学习器(不同的学习算法被组合在一起),stacking学习用元模型组合基础模型。stacking 的概念是学习几个不

    2024年02月01日
    浏览(42)
  • 【机器学习】python实现随机森林

    目录 一、模型介绍 1. 集成学习 2. bagging 3. 随机森林算法 二、随机森林算法优缺点 三、代码实现 四、疑问 五、总结 本文使用mnist数据集,进行随机森林算法。 集成学习通过训练学习出多个估计器,当需要预测时通过结合器将多个估计器的结果整合起来当作最后的结果输出。

    2024年02月05日
    浏览(48)
  • python大数据之随机森林(回归与分类)

    随机森林在大数据运用中非常的常见,它在预测和回归上相比于SVM,多元线性回归,逻辑回归,多项式回归这些,有着比较好的鲁棒性。 随机森林是一个用随机方式建立的,包含多个决策树的分类器。其输出的类别是由各个树输出的类别的众数而定。 优点: 处理高纬度的数

    2024年02月02日
    浏览(42)
  • 随机森林算法(Random Forest)原理分析及Python实现

    随机森林是bagging集成策略中最实用的算法之一。森林是分别建立了多个决策树,把它们放到一起就是森林,这些决策树都是为了解决同一任务建立的,最终的目标也都是一致的,最后将其结果来平均即可,如图所示。 从给定的训练数据集中学习出一个函数(模型参数),当

    2024年02月02日
    浏览(58)
  • Python数据分析案例05——影响经济增长的因素(随机森林回归)

    在计量经济学里面的研究,围绕着影响GDP的因素的研究有很多,基本都是做回归,拿GDP作为被解释变量y,其他因素作为解释变量x。然后做线性回归,时间序列就做自回归,面板数据就做固定效应等等。本次案例采用机器学习里面的随机森林回归来研究影响经济增长的因素,

    2024年02月09日
    浏览(43)
  • Python数据分析案例22——财经新闻可信度分析(线性回归,主成分回归,随机森林回归)

     本次案例还是适合人文社科领域,金融或者新闻专业。本科生做线性回归和主成分回归就够了,研究生还可以加随机森林回归,其方法足够人文社科领域的硕士毕业论文了。 有八个自变量,[\\\'微博平台可信度\\\',\\\'专业性\\\',\\\'可信赖性\\\',\\\'转发量\\\',\\\'微博内容质量\\\',\\\'时效性\\\',\\\'验证程度

    2023年04月08日
    浏览(75)
  • Python实现PSO粒子群优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。 PSO是粒子群优化算法(Particle Swarm Optimization)的英文缩写,是一种基于种群的随机优化技术,由Eberhart和Kennedy于1995年提出。粒子群算法模仿昆虫、

    2024年02月13日
    浏览(43)
  • 【机器学习算法】决策树和随机森林在计算机视觉中的应用

    决策树和随机森林在计算机视觉中有着广泛的应用。决策树作为一种简单而强大的分类模型,可以用于图像分类、目标检测、特征提取等任务。它能够根据图像的特征逐层进行判断和分类,从而实现对图像数据的智能分析和理解。随机森林作为一种集成学习方法,利用多棵决

    2024年04月13日
    浏览(61)
  • 随机森林回归算法讲解

    ChatGPT中文版点我跳转 恰饭广告,望各位贵客支持,感谢 学习基础算法的过程中,几乎任何问题都可以用恰饭的那个网站解决哦! 随机森林(Random Forest)是一种基于集成学习的机器学习算法,被广泛用于回归问题。它通过使用多个决策树对数据进行建模,并将它们的预测结

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包