(三)使用Python进行交易的随机森林算法

随机森林模型及案例(Python) 1 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。 集成学习模型的常见算法有Bagging算法和Boosting算法两种。 Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。 1.1 Bagging算法简介 Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投 阅读详情

作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai


(一)机器学习中的集成学习入门

(二)bagging 方法

(三)使用Python进行交易的随机森林算法


在这篇文章中,我们将讨论什么是随机森林,他们如何工作,他们如何帮助克服决策树的局限性。

随着机器学习及其技术在当前环境中的蓬勃发展,越来越多的算法在各种领域中找到应用。 机器学习各个算法的工作彼此不同,其中一个算法对于某个问题可能比另一个算法更好。 机器学习算法不断更新和升级,以扩大其应用范围并最大限度地减少其缺点。

随机森林算法就是这样一种算法,旨在克服决策树的局限性。在这篇博客中,我们将介绍它。在直接介绍随机森林之前,让我们首先简要了解决策树及其工作原理。

什么是决策树?

正如其名称所示,决策树具有分层或者树状结构,其分支充当节点。我们可以通过遍历这些节点来做出某个决策,这些节点通过数据特征进行参数选择。
但是,决策树存在过度拟合的问题。 过度拟合通常在树中添加越来越多的节点来增加树内的特异性以达到某个结论,从而增加树的深度并使其更复杂。

此外,在本博客中,我们将了解 Random Forest 如何帮助克服决策树的这一缺点。

什么是随机森林?

随机森林是一种使用集成方法的监督分类机器学习算法。 简而言之,随机森林由众多决策树组成,有助于解决决策树过度拟合的问题。 通过从给定数据集中选择随机特征来随机构造这些决策树。
随机森林根据从决策树收到的最大投票数得出决策或预测。 通过众多决策树达到最大次数的结果被随机森林视为最终结果。

随机森林的工作原理

随机森林基于集成学习技术,简单地表示一个组合或集合,在这种情况下,它是决策树的集合,一起称为随机森林。集合模型的准确性优于单个模型的准确性,因为它汇总了单个模型的结果并提供了最终结果。
那么,如何从数据集中选择特征以构建随机森林的决策树呢?

我们使用称为 bagging 的方法随机选择特征。根据数据集中可用的特征集,通过选择具有替换的随机特征来创建许多训练子集。这意味着可以在不同的训练子集中同时重复一个特征。

例如,如果数据集包含20个特征,并且要选择5个特征的子集来构建不同的决策树,则将随机选择这5个特征,并且任何特征都可以是多个子集的一部分。这确保了随机性,使树之间的相关性更小,从而克服了过度拟合的问题。

选择特征后,将根据最佳分割构建树。每棵树都给出一个输出,该输出被认为是从该树到给定输出的“投票”。输出

接收最大’投票’的随机森林选择最终输出/结果,或者在连续变量的情况下,所有输出的平均值被视为最终输出。

在这里插入图片描述

例如,在上图中,我们可以观察到每个决策树已经投票或者预测了特定的类别。随机森林选择的最终输出或类别将是N类,因为它具有多数投票或者是四个决策树中的两个预测输出。

随机森林的 Python 代码

在此代码中,我们将创建一个随机森林分类器并对其进行训练,并且给出每日回报。

导入库
import quantrautil as q
import numpy as np
from sklearn.ensemble import RandomForestClassifier

上面导入的库将按照如下方式使用:

  • quantrautil:这将用于从雅虎 finance 中获取 BAC 股票的价格数据;
  • numpy:对BAC股票价格执行数据操作,以计算输入特征和输出结果。如果你想要了解更多关于 numpy 的信息,可以查看 numpy 官网;
  • Sklearn:sklearn 是很多工具和机器学习模型的集合,你可以很自由使用;
  • RandomForestClassifier:将用于创建 Random Forest 分类器模型;
获取数据

下一步是从 quantrautil 导入 BAC 库存的价格数据。quantrautil 的 get_data 函数用于获取从 2000 年1月1日到2019年1月31日的 BAC 数据。如下所示:

data = q.get_data('BAC','2000-1-1','2019-2-1')
print(data.tail())
[*********************100%***********************]  1 of 1 downloaded
             Open   High    Low  Close  Adj Close     Volume Source
Date                                                               
2019-01-25  29.28  29.72  29.14  29.58      29.27   72182100  Yahoo
2019-01-28  29.32  29.67  29.29  29.63      29.32   59963800  Yahoo
2019-01-29  29.54  29.70  29.34  29.39      29.08   51451900  Yahoo
2019-01-30  29.42  29.47  28.95  29.07      28.77   66475800  Yahoo
2019-01-31  28.75  28.84  27.98  28.47      28.17  100201200  Yahoo
创建输入和输出数据

在这一步中,我将创建输入和输出变量。

输入变量:我使用 (open-close)/open ,(High-Low)/Low,过去5议案的标准差(std_5),过去五天的平均值(ret_5)。

输出变量:如果明天的收盘价大于今天的收盘价,则输出变量设置为 1 ,否则设置为 -1。1 表示购买股票,-1表示卖出股票。

输入和输出数据的特征完全是随机的,如果你有兴趣可以查看 wiki 。

# Features construction 
data['Open-Close'] = (data.Open - data.Close)/data.Open
data['High-Low'] = (data.High - data.Low)/data.Low
data['percent_change'] = data['Adj Close'].pct_change()
data['std_5'] = data['percent_change'].rolling(5).std()
data['ret_5'] = data['percent_change'].rolling(5).mean()
data.dropna(inplace=True)
# X is the input variable

X = data[['Open-Close', 'High-Low', 'std_5', 'ret_5']]


# Y is the target or output variable

y = np.where(data['Adj Close'].shift(-1) > data['Adj Close'], 1, -1)


训练集合和测试集合的划分

我们现在将数据集拆分为 75% 的训练数据集,25% 的测试数据集。

# Total dataset length
dataset_length = data.shape[0]
# Training dataset length

split = int(dataset_length * 0.75)

split
3597
# Splitiing the X and y into train and test datasets
X_train, X_test = X[:split], X[split:]
y_train, y_test = y[:split], y[split:]
# Print the size of the train and test dataset

print(X_train.shape, X_test.shape)

print(y_train.shape, y_test.shape)
(3597, 4) (1199, 4)
(3597,) (1199,)
训练机器学习模型

全部数据设置完毕!让我们训练一个决策树分类器模型。树中的 RandomForestClassifier 函数存储在变量 clf 中,然后使用 X_train 和 y_train 数据集作为参数调用 fit 方法,以便分类器模型可以学习输入和输出之间的关系。

clf = RandomForestClassifier(random_state=5)
# Create the model on train dataset
model = clf.fit(X_train, y_train)
from sklearn.metrics import accuracy_score
print('Correct Prediction (%): ', accuracy_score(y_test, model.predict(X_test), normalize=True)*100.0)
Correct Prediction (%):  50.29190992493745
# Run the code to view the classification report metrics
from sklearn.metrics import classification_report
report = classification_report(y_test, model.predict(X_test))
print(report)
             precision    recall  f1-score   support

         -1       0.50      0.61      0.55       594
          1       0.51      0.40      0.45       605

avg / total       0.50      0.50      0.50      1199
策略回报
data['strategy_returns'] = data.percent_change.shift(-1) * model.predict(X)
每日返回直方图
%matplotlib inline
import matplotlib.pyplot as plt
data.strategy_returns[split:].hist()
plt.xlabel('Strategy returns (%)')
plt.show()

在这里插入图片描述

策略回报
(data.strategy_returns[split:]+1).cumprod().plot()
plt.ylabel('Strategy returns (%)')
plt.show()

在这里插入图片描述

图中输出是根据随机森林分类器的代码显示策略回报和每日回报。

优点
  • 避免过度拟合
  • 可用于分类和回归
  • 可以处理缺失值
缺点
  • 大量的树结构会占用大量的空间和利用大量时间

在这篇博客中,我们学习了利用随机森林来进行简单的策略编写。

机器学习预测股票收益(三)之比较随机森林、支持向量机回归模型以及神经网络多层感知器模型 文章目录前言一、随机森林模型二、SVR模型三、MLPRegressor模型总结 前言 本文将使用Python整理1927-2020年所有美国上市公司股票数据。根据历史收益以及交易量,使用随机森林,支持向量机以及神经网络等机器学习方法预测股票收益,并比较模型结果。数据处理以及函数见“机器学习预测股票收益(一)” 一、随机森林模型 result_rfr = pd.DataFrame() rfr = RandomForestRegressor(random_state = 44,max_depth = 70, 阅读详情

相关推荐

【信用评分预测模型(四)】Python随机森林模型

在这篇文章中已经对数据进行了标准化和异常值处理。得到了一个新的数据集,且数据集是不受极端值影响的数据集。在另外一篇文章中讲解了普遍情况下的随机森林预测模型,在这篇文章将运用在信用评分预测上。首先了解一下集成学习,集成学习(ensemble)思想是为了解决单个模型或者某一组参数的模型所固有的缺陷,从而整合起多个模型,取长补短,避免局限性。

m0_65157892的博客 4049

机器学习 (四) 基于Python实现的随机森林详解

1.概述 随机森林 Random Forest 是一种强大的机器学习模型,得益于各种强大的库,现在我们可以很轻松地调用它,但并不是每一个会使用该模型的人都理解它真正的实现方式,本文将用 Python 实现并解释了决策树和随机森林的工作过程。 比如Scikit-Learn,让我们现在可以非常轻松地使用 Python 实现任何机器学习算法。 2.随机森林简介 随机森林,是用随机的方式建立一个森林,...

AI黑板报的专栏 5155

python实现随机森林

python实现随机森林

qq_45067943的博客 4万+

随机森林——回归预测股票数据的Python实例

在做项目时要用随机森林,查资料发现大多数都是用随机森林做分类,很少见到有回归的。虽然分类随机森林和回归随机森林代码实现相差不大,但是对于新手小白来说,如果有比较完整的代码直接学习可以节省很多时间,这是我写这篇文章的原因。 随机森林我就不介绍了,其他地方介绍一搜一大堆。 这篇文章关注的是如何用python实现回归随机森林。分为随机森林构建和随机森林预测两部分         随机森林构...

Wacky_W的博客 3万+

随机森林算法(Random Forest)原理分析及Python实现

随机森林算法(Random Forest)原理分析及Python实现

weixin_45075135的博客 2万+

随机森林算法python实现

随机森林算法python实现瞎BB代码导入数据切分训练集测试集找到最有用的几个属性根据上面的代码更改属性参数组合遍历找最优随机森林样本数据 瞎BB 实现根据样本数据(用眼距离distance、最长持续用眼时长duration、总用眼时长total_time、户外运动时长outdoor、用眼角度angle、健康环境光照用眼比例proportion)判别是否需要近视预警 样本实在太少 代码 导入数据 ...

CK1201的博客 5970

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

本文对随机森林回归算法对原理说明、算法的Python实现及算法应用进行了简要的说明,文中给出了一个拟合效果不佳的模型进行示例。

m0_61399808的博客 2万+

随机森林算法的总结和基于python的简单实现

第一次写博客,水平有限,恳请指正交流. 接触机器学习也有一段时间了,以前只是看看理论,调调sklearn的包,感觉并没有真正的明白算法的具体细节。 现在开始利用空闲时间,把自己学过的算法用python实现一下,代码学习时间很短,所以代码结构不是很好,也没优化,以后我会努力写出优秀的代码的。 一 前言:随机森林(Random Forests)真正被系统性的提出是 BREIMAN  20

zwzen1的博客 1万+

保姆级随机森林算法Python教学

数据挖掘、数据分析和数学建模常用的随机森林分类器,本文将会从原理、实现步骤、模型评估等多个方面进行保姆级Pyhon实现教学。

m0_61399808的博客 1万+

Python机器学习笔记——随机森林算法

随机森林算法的理论知识   随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法。随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为“代表集成学习技术水平的方法”。 一,随机森林的随机性体现在哪几个方面? 1,数据集的随机选取   从原始的数据集中采取有放回的抽样(bagging),构造子数据集,子数据集的数据量是和原始数...

weixin_30273931的博客 3323

随机森林算法(Random Forest)Python实现

目录 前言 一、什么是Random Forest ? 1.1什么是监督式机器学习? 1.2 什么是回归和分类? 1.3 什么是决策树? 1.4 什么是随机森林? 二、Random Forest 的构造过程 2.1 算法实现 2.2数据的随机选取 2.3待选特征的随机选取 2.4 相关概念解释 三、 Random Forest 优缺点 3.1 优点 3.2 缺点 四、Extra-Trees(极端随机树) 五、Random Forest 的Python实现 5.1 R.....

Python,数据分析,机器学习,深度学习 6万+

随机森林算法详解

<div id="post_detail"> [Machine Learning & Algorithm] 随机森林(Random Forest) 阅读目录1 什么是随机森林?2 随机森林的特点3 随机森林的相关基础知识4 随机森林的生成5 袋外错误率(oob error)6 随机森林工作原理解释的一个简单例子7 随机森林...

阿斯达克 3万+

随机森林、LSTM、SVM、线性回归四种机器学习方法预测股价

通过多种机器学习股票价格预测,包括随机森林(Random Forest),决策树(SVM),线性回归(LinearRegression),长短期记忆(LSTM)。 利用toshare获取600519.sh 2000-2020年数据,除了随机森林外基本都是以前19年数据做训练集,最后一年做预测。数据获取的文件在toshare文件夹,获取好的数据集一并在内。想自己拿数据,注册toshare换接口即可。 这些内容都是结课实践要求下我搜集网络资料学习而来,自己理解修改整理使得基本以同一个数据集进行预测。可以说对国内网络上参差不齐的简单机器学习股票预测做了一个复现整理。这对我的机器学习知识有一定帮助,也希望能帮助到需要它的人。 全部为jupterbook格式,代码注释全面且执行效果都在。 适合个人学习、课程团队作业、毕业设计参考等。

随机森林分类算法_分类算法-随机森林

分类算法-随机森林 (Classification Algorithms - Random Forest) Advertisements 广告 Previous Page 上一页 Next Page 下一页 介绍 (Introduction) Random forest is a supervised learning algorithm which is ...

cunzai1985的博客 1万+

全网最详细Seurat v5 流程复现(拿来即用)

本文是基于seurat v5版本的教程复现,主要依据来源于官网seurat v5建议大家有时间的话可以去官网进行详细阅读学习!本节内容在之前seurat v4的教程都很多都有提到,文章所用到的数据及代码已经给各位放在这里了,有需要自取!请点击这里哦提取码:bui1。

ZxVSaccount的博客 1万+

别再手动调时间了!用Windows自带的tzutil命令,1分钟搞定时区错误

本文介绍了如何使用Windows自带的tzutil命令快速解决时区错误问题。通过简单的命令行操作,用户可以一键切换时区、查看全球时区代码库,并实现自动化时区同步。相比传统GUI设置,tzutil更可靠且高效,特别适合企业环境批量部署。

weixin_42531494的博客 316

Python算法:随机森林分类

随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习。

北天的博客 6513

信息流广告ROI线性预测看板&投放分析监控看板展示&数据处理入库全流程

此看板数据量太大,在tableau public部署运行速度极慢,因此用图片作展示 数据清洗

Larry_Westside的博客 2317

随机森林回归算法原理及Python实践

随机森林回归算法是一种基于决策树的集成学习算法,主要用于解决回归问题。

u013571432的博客 2202

IQA图像质量评价 数据集介绍(LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K)

LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K 数据集介绍

qq_37925923的博客 1万+

CANape快速上手

文章帮助记录CANape学习过程。

小弱鸡的博客 1万+

随机森林算法

将多个决策树结合在一起,每次数据集是随机有放回的选出,同时随机选出部分特征作为输入,所以该算法被称为随机森林算法。可以看到随机森林算法是以决策树为估计器的Bagging算法。

crossoverpptx的博客 4908

DELL服务器BIOS下配置RAID阵列

dell服务器配置raid阵列

weixin_58250887的博客 1万+
上一篇: 在 TensorFlow 中实现简单的自动编码器
下一篇: (四)Python中随机森林的实现与解释
coderpai
博客等级 码龄10年 1082粉丝 469原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值