改编自https://www.bilibili.com/video/BV1iJ41127cw?spm_id_from=333.337.search-card.all.click提供的代码。下文为改动之后的代码:

import numpy as np
import pandas as pdfrom sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

导入数据,按9:1划分训练、测试集,随机数定为42(任意)

sediment=pd.read_csv('E:/Resource/Develop/notebook/random_forest.csv')
X=sediment.drop(["S"],axis=1)
y=sediment["S"]
x_train,x_test,y_train,y_test=train_test_split(X,y,random_state=42,test_size=0.1)

优化参数:遍历字典中的参数取值。字典可以根据得到的结果继续更新,缩小上次的字典范围;字典中的数值根据自己的数据特点确定。

#导入随机森林模块
from sklearn.ensemble import RandomForestRegressor
#导入网络搜索交叉验证,网络搜索可以让模型参数按照我们给定的列表遍历,找到效果最好的模型
#交叉验证可以告诉我们模型的准确性
from sklearn.model_selection import GridSearchCV
#构造参数字典,让这三个参数按照列表给定的顺序排列组合遍历一遍
param_grid={'n_estimators':range(5,150,5),#决策树的个数'max_depth':[3,4,5,6,7,8,9],#最大树深,树太深会造成过拟合'max_features':[0.3,0.4,0.6,1,2,3]#决策树划分时考虑的最大特征数
}
#实例化随机森林回归器
rf=RandomForestRegressor(random_state=42)
#一随机森林回归器为基础构造网络搜索回归器
grid=GridSearchCV(rf,param_grid=param_grid,cv=10)#十则交叉验证grid.fit(x_train,y_train)

查看最优参数结果(这一“最优”参数是基于两次random_state=42得到的,一次是随机选取的训练测试集,另一次是随机森林模型当中建模的随机路径,42(或其他任意数字代表某一种随机过程,帮助我们复现该次随机的结果。只要我们下回还用2次random_state=42,就能得到和这回同样的结果)

#查看效果最好的模型
grid.best_params_
#制定效果最好参数对应的模型
rf_reg=grid.best_estimator_
rf_reg

得到模型之后分析参数重要性

#特征重要度分析
rf_reg.feature_importances_
print('特征排序:')
feature_names=X.columns
feature_importances=rf_reg.feature_importances_
indices=np.argsort(feature_importances)for index in indices:print('feature %s (%f)' %(feature_names[index],feature_importances[index]))

参数重要性排序作图

plt.figure(figsize=(7,5))
plt.title('随机森林模型中不同特征的重要程度')
plt.bar(range(len(feature_importances)),feature_importances[indices],color='b')
plt.xticks(range(len(feature_importances)),np.array(feature_names)[indices],color='b')
plt.show()
#可视化测试集上回归预测的结果
result={"labels":y_test,"prediction":rf_reg.predict(x_test)}
result=pd.DataFrame(result)

输出测试集的真实值(labels)和预测值(prediction)

print(result)

根据抽样序号在图中展现真实值和预测值结果(见下面的例图)

result['labels'].plot(style='k.',figsize=(15,5))
result['prediction'].plot(style='r.')
plt.legend(fontsize=15,markerscale=3)#设置图例字号以及图例大小
plt.tick_params(labelsize=15)#设置坐标数字大小
plt.grid()


评估该随机森林回归模型的好坏

#计算测试集的均方误差和均方根误差
from sklearn import metrics
MSE=metrics.mean_squared_error(y_test,rf_reg.predict(x_test))
RMSE=np.sqrt(MSE)
print('(MSE,RMSE)=',(MSE,RMSE))
#计算测试集的R方
from sklearn.metrics import r2_score
print('The value of R-squared of LinearRegression is', r2_score(y_test,rf_reg.predict(x_test)))

随机森林回归预测_jupyter notebook相关推荐

  1. 采用支持向量回归(SVR)和随机森林回归预测两种机器学习方法对房价进行预测(附完整代码)

    大家好,我是带我去滑雪,每天教你一个小技巧! 本文分别采用支持向量回归(SVR)和随机森林回归预测两种机器学习方法对房价进行预测.随机将数据分为训练集和测试集,比例为8:2,数据和代码均在文末. 1. ...

  2. python实现对森林生物量进行随机森林回归预测

    使用随机森林回归预测森林生物量(python) 随机森林算法的基本思想是基于多颗决策树的集成学习过程,使用场景广泛,一般的分类回归问题都可以使用.我们以光学影像为例,来估测森林生物量. 建立回归关系需 ...

  3. r语言随机森林回归预测_从零实现回归随机森林

    一.前言 回归随机森林作为一种机器学习和数据分析领域常用且有效的算法,对其原理和代码实现过程的掌握是非常有必要的.为此,本文将着重介绍从零开始实现回归随机森林的过程,对于随机森林和决策树的相关理论原理 ...

  4. 随机森林回归预测r语言_R包 randomForest 进行随机森林分析

    randomForest 包提供了利用随机森林算法解决分类和回归问题的功能:我们这里只关注随机森林算法在分类问题中的应用 首先安装这个R包 install.packages("randomF ...

  5. python随机森林回归预测股票,收益率做标签,基本面因子做特征

    从BP神经网络训练模型后,想着换个模型训练训练数据集,于是在SVM和随机森林中选择,最后选择了随机森林.随机森林的原理不在这里做详细解释,有大佬比我讲的要好太多.我仅仅是就这我的代码做一些解释. 导入 ...

  6. 随机森林回归预测r语言_使用随机森林(R语言)做回归

    引言 随机森林( random forest) 是一种基于分类树( classification tree) 的算法,它可以用于分类和回归,本文在这里以广西地区1990-2014共25年的GDP数据作 ...

  7. Python电影观众数量回归分析 随机森林 可视化 实验报告

    实验代码:Python电影观众数量回归分析随机森林可视化-数据挖掘文档类资源-CSDN文库 前言 随着经济的发展和人民日益增长的美好生活需要的显著提升,看电影成为了人民群众在闲暇时光娱乐的重要途径.面 ...

  8. Python数据分析案例-利用多元线性回归与随机森林回归算法预测笔记本新品价格

    1.前言 目的: 本文通过多元线性回归与随机森林算法预测笔记本新品的发售价 工具: 语言:Python 3.8 软件:Jupyter Notebook 库:pandas.numpy.matplotli ...

  9. 独家 | 用随机森林预测“美版拼多多”商品销量

    作者:Andrew Udell 翻译:王闯(Chuck) 校对:廖倩颖 本文约2200字,建议阅读8分钟 作者基于Kaggle上的Wish数据集,用Python演示了随机森林回归预测商品销量的方法,对 ...

  10. 机器学习预测股票收益(一)之随机森林模型

    机器学习预测股票收益(一)之随机森林模型 前言 一.导入库和数据 二.处理数据以及计算特征变量 三.使用随机森林回归预测股票收益 1.构建训练集和测试集 2.查看预测结果 四.根据预测结果构建long ...

最新文章

  1. 顺丰被删库?半个DBA的跑路经验总结
  2. 【笔记】Error while loading PyV8 binary: exit code 1解决方法
  3. HDU1671-Phone List (trie树)
  4. Android异步下载网络图片(其二:AsyncTask)
  5. Oracle86和92语法的连接,子查询,集合的操作
  6. 挑选回文串(二进制枚举)
  7. MATLAB中的命令行输出
  8. 【转】使用lockbits方法处理图像
  9. 温伯格《技术领导之路》——如何弯腰更省力,怎样伸手更合理
  10. 0108 点击时 大小图
  11. 中兴ZTE ZXR10系列交换机2818S固件以及更新方法
  12. php学习redis买什么书,redis
  13. EndNote无法修改参考文献格式
  14. 新手建站推广完美教程(重点推荐)
  15. 打印机扫描无法连接到计算机名,网络打印机无法扫描到电脑怎么处理
  16. vscode 程序员鼓励师_把软萌程序猿鼓励师装进VScode?最强交互彩虹屁,GitHub2.5k星标...
  17. 利用python进行数据分析(第二版)_第十三章
  18. 如何同步更新本地代码与GitHub代码
  19. UART RS-232 485通信 串口通信传输时间计算 波特率计算
  20. Ubuntu下vim打开文件时,提示请按ENTER或其它命令继续

热门文章

  1. matlab hspice联合仿真,HSPICE TOOLBOX FOR MATLAB
  2. 高速接口SFP、GbE、SRIO、PCIE、CPRI和SGMII的参考时钟选择问题
  3. python海词查单词
  4. 达梦数据库同步部署方案
  5. android addr2line使用
  6. 使用android busybox拷贝文件到qnx系统
  7. qnx 设备驱动开发_一种QNX系统的USB驱动加载方法与流程
  8. tlac100怎么添加ap_如何设置AC功能管理无线AP
  9. OSI七层网络协议(应用层:http协议、传输层:TCP协议、网络层:IP协议,数据链路层:ARP协议、网络下一跳,物理层:比特流)
  10. 2021年山东省安全员C证考试内容及山东省安全员C证考试试卷