【随即森林模型】

news/2024/12/28 16:31:51/

随机森林模型的基本原理和代码实现

集成模型简介

集成学习模型是机器学习非常重要的一部分。
集成学习是使用一系列的弱学习器(或称之为基础模型)进行学习,并将各个弱学习器的结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。

集成学习模型有两种常见的算法:

  • Bagging算法的典型机器学习模型为本次的随机森林模型
  • Boosting算法的典型机器学习模型为之后的AdaBoost、GBDT、XGBoost和LightGBM模型。

随机森林模型的基本原理

如下如所示,随机森林模型会在原始数据集中随机抽样,构成n个不同的样本数据集,然后根据这些数据集搭建n个不同的决策树模型,最后根据这些决策树模型的平均值(针对回归模型)或者投票(针对分类模型)情况来获取最终结果。
在这里插入图片描述
为了保证模型的泛化能力,随机森林在建立每棵树的时候,往往会遵循两个基本原则:

  • 数据随机:随机地从所有数据中有放回地抽取数据作为其中一棵决策树的数据进行训练。举例来说,有1000个原始数据,有放回地抽取1000次,构成一组新的数据(因为是有放回抽取,有些数据可能被选中多次,有些数据可能不被选上),作为某一个决策树的数据来进行模型的训练。
  • 特征随机:如果每个样本的特征维度为M,指定一个常数k<M,随机地从M个特征中选取k个特征,在使用Python构造随机森林模型时,默认取特征的个数k是M的平方根: M \sqrt M M

随机森林和决策树模型一样,可以做分类分析,也可以做回归分析。

代码实现

随机森林分类模型:
在这里插入图片描述
随机森林回归模型:
在这里插入图片描述

量化金融-股票数据获取

tushare库基本介绍

在这里插入图片描述
通过日期取历史某一天的全部历史
在这里插入图片描述
单只股票某日:
在这里插入图片描述

#多个股票
df = pro.daily(ts_code='000001.SZ,600000.SH', start_date='20180701', end_date='20180718')
    ts_code trade_date  open  high   low  close  pre_close  change  pct_chg  \
0   600000.SH   20180718  9.51  9.64  9.48   9.51       9.44    0.07     0.74   
1   000001.SZ   20180718  8.75  8.85  8.69   8.70       8.72   -0.02    -0.23   
2   000001.SZ   20180717  8.74  8.75  8.66   8.72       8.73   -0.01    -0.11   
3   600000.SH   20180717  9.41  9.48  9.38   9.44       9.41    0.03     0.32   
4   000001.SZ   20180716  8.85  8.90  8.69   8.73       8.88   -0.15    -1.69   
5   600000.SH   20180716  9.50  9.54  9.34   9.41       9.49   -0.08    -0.84   
6   600000.SH   20180713  9.57  9.58  9.46   9.49       9.47    0.02     0.21   
7   000001.SZ   20180713  8.92  8.94  8.82   8.88       8.88    0.00     0.00   
8   000001.SZ   20180712  8.60  8.97  8.58   8.88       8.64    0.24     2.78   
9   600000.SH   20180712  9.41  9.61  9.39   9.57       9.38    0.19     2.03   
10  000001.SZ   20180711  8.76  8.83  8.68   8.78       8.98   -0.20    -2.23   
11  600000.SH   20180711  9.37  9.44  9.32   9.38       9.57   -0.19    -1.99   
12  000001.SZ   20180710  9.02  9.02  8.89   8.98       9.03   -0.05    -0.55   
13  600000.SH   20180710  9.61  9.65  9.50   9.57       9.60   -0.03    -0.31   
14  000001.SZ   20180709  8.69  9.03  8.68   9.03       8.66    0.37     4.27   
15  600000.SH   20180709  9.37  9.63  9.37   9.60       9.37    0.23     2.45   
16  600000.SH   20180706  9.31  9.43  9.17   9.37       9.26    0.11     1.19   
17  000001.SZ   20180706  8.61  8.78  8.45   8.66       8.60    0.06     0.70   
18  600000.SH   20180705  9.26  9.35  9.22   9.26       9.31   -0.05    -0.54   
19  000001.SZ   20180705  8.62  8.73  8.55   8.60       8.61   -0.01    -0.12   
20  600000.SH   20180704  9.34  9.42  9.28   9.31       9.35   -0.04    -0.43   
21  000001.SZ   20180704  8.63  8.75  8.61   8.61       8.67   -0.06    -0.69   
22  000001.SZ   20180703  8.69  8.70  8.45   8.67       8.61    0.06     0.70   
23  600000.SH   20180703  9.29  9.38  9.20   9.35       9.29    0.06     0.65   
24  600000.SH   20180702  9.55  9.55  9.23   9.29       9.56   -0.27    -2.82   
25  000001.SZ   20180702  9.05  9.05  8.55   8.61       9.09   -0.48    -5.28   vol       amount  
0    189227.00   180858.003  
1    525152.77   460697.377  
2    375356.33   326396.994  
3    137134.95   129512.091  
4    689845.58   603427.713  
5    144141.19   135697.106  
6    150263.39   142708.347  
7    603378.21   535401.175  
8   1140492.31  1008658.828  
9    197048.37   188206.858  
10   851296.70   744765.824  
11   152039.33   142450.919  
12   896862.02   803038.965  
13   124028.37   118668.133  
14  1409954.60  1255007.609  
15   221725.65   212109.327  
16   225944.43   210564.106  
17   988282.69   852071.526  
18   164954.38   152978.661  
19   835768.77   722169.579  
20   144647.77   135000.876  
21   711153.37   617278.559  
22  1274838.57  1096657.033  
23   241235.51   224816.757  
24   226690.89   212743.905  
25  1315520.13  1158545.868

股票衍生变量生成

pro = ts.pro_api()
df = pro.query('daily', ts_code='000002.SZ', start_date='20180701', end_date='20180718')

在这里插入图片描述
简单衍生变量的计算:
在这里插入图片描述
通过如下代码可以先构造一些简单的衍生变量:

df['close-open']=(df['close']-df['open'])/df['open']
df['high-low']=(df['high']-df['low'])/df['low']df['pre_close']=df['close'].shift(1)#该列所以往下移一行形成昨日收盘价
df['price-change']=(df['close']-df['pre_close'])
df['p_change']=(df['close']-df['pre_close'])/df['pre_close']*100

股票衍生变量生成

移动平均线指标MA值
通过如下代码可以获得股价5日移动平均值和10日移动平均值:

df['MA5']=df['close'].rolling(5).mean()
df['MA10']=df['close'].rolling(10).mean()

在这里插入图片描述
由于当我们在计算像MA5这样的数据时,数据前四天对应的平均值是无法计算出来的(因为最开始四天数据量不够去计算5日均值),所以会产生空值,通常会通过dropna()函数删除空值,以免在后续计算中出现空值造成的问题。
代码如下:

df.dropna(inplace=True) #删除空行,也可以写作df=df.dropna()

在这里插入图片描述

股票涨跌预测模型搭建


http://www.ppmy.cn/news/310590.html

相关文章

Forest详细介绍

文章目录 前言Forest介绍为什么使用 Forest?Forest 如何使用?Forest 的工作原理Forest 的架构 Forest的使用依赖导入配置yml请求请求方法URL 参数数据转换Content-Type 请求头请求体类型Encoder 拦截器(常用)一、构建拦截器二、拦截器与 Spring 集成 注解说明&#xff1a;Bod…

速收藏!实拍你的蚂蚁森林,张张都是高清美图壁纸

你们过去在蚂蚁森林通过步行、线下支付、生活缴费、骑共享单车等各种低碳行为&#xff0c;以及起早贪黑抛亲弃友好不容易养大的树&#xff0c;终于长大了&#xff01; 2017年秋天&#xff0c;蚂蚁森林组织了一个蚂蚁森林小分队去了一趟蚂蚁森林&#xff0c;给那些迫切想要看看自…

树和森林(Tree and Forest)

树型结构是一种重要的非线性数据结构。树型结构在客观世界广泛存在&#xff0c;如组织关系可用树来表示。树在计算机领域也有广泛应用&#xff0c;如在编译程序时&#xff0c;可用树来表示源程序的语法结构(语法树)。又如在数据库系统中&#xff0c;使用树型结构存储索引等信息…

森林攻略

1.存档攻略 C盘/ Users / Administrator / AppData / LocalLow / SKS / The forest / 一列数字 你保存的存档&#xff0c;就在那个名称全是数字的文件夹中&#xff0c;只需把其中的存档文件保存在U盘或网盘中&#xff0c;下次玩时&#xff0c;把保存的存档文件放到存档文件夹…

森林图

森林图 以统计指标和统计分析方法为基础&#xff0c;用数值计算绘制出的图形&#xff0c;通常是在平面直角坐标系中&#xff0c;以一条垂直的无效 线&#xff08;0或者1&#xff09;为中心&#xff0c;用平衡于x轴的多条线段描述每个组指标的中值和可信区间&#xff0c;最后一…

高效与灵活相结合:Verilog编写的跨时钟域循环缓冲控制器解析

目录 一、硬件循环缓冲器控制器 二、Verilog编写的循环缓冲控制器 三、使用方法 一、硬件循环缓冲器控制器 1.1 介绍 本文将介绍一种用Verilog编写的循环缓冲控制器&#xff0c;这种控制器主要用于FPGA设计中的数据流缓冲。 项目下载​​​​​​​ 1.2 缓冲区概念 循环…

vue3---模板引用 nextTick

目录 模板引用--ref 访问模板引用 v-for 中的模板引用 函数模板引用 组件上的 ref 简单理解Vue中的nextTick 示例 二、应用场景 三、nextTick源码浅析 实战 --- vue3实现编辑与查看功能 模板引用--ref 虽然 Vue 的声明性渲染模型为你抽象了大部分对 DOM 的直接操作&…

人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络(SNN)实现及应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络&#xff08;SNN&#xff09;实现及应用&#xff0c;脉冲神经网络&#xff08;SNN&#xff09;是一种基于生物神经系统的神经网络模型&#xff0c;它通过模拟神…