使用极限学习机进行股市预测(Matlab代码实现)

news2024/12/26 22:20:30

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

极限学习机(Extreme Learning Machine,ELM)作为前馈神经网络学习中一种全新的训练框架,在行为识别、情感识别和故障诊断等方面被广泛应用,引起了各个领域的高度关注和深入研究.ELM最初是针对单隐层前馈神经网络的学习速度而提出的,之后又被众多学者扩展到多隐层前馈神经网络中.该算法的核心思想是随机选取网络的输入权值和隐层偏置,在训练过程中保持不变,仅需要优化隐层神经元个数.网络的输出权值则是通过最小化平方损失函数,来求解Moore-Penrose广义逆运算得到最小范数最小二乘解.相比于其它传统的基于梯度的前馈神经网络学习算法,ELM具有实现简单,学习速度极快和人为干预较少等显著优势,已成为当前人工智能领域最热门的研究方向之一.ELM的学习理论表明,当隐层神经元的学习参数独立于训练样本随机生成,只要前馈神经网络的激活函数是非线性分段连续的,就可以逼近任意连续目标函数或分类任务中的任何复杂决策边界.近年来,随机神经元也逐步在越来越多的深度学习中使用,而ELM可以为其提供使用的理论基础.

运行脚本的说明:

  1. 打开 ELM_run.m 脚本并更改脚本参数的值。
  2. 运行脚本

📚2 运行结果

🎉3 参考文献

[1]徐睿,梁循,齐金山,李志宇,张树森.极限学习机前沿进展与趋势[J].计算机学报,2019,42(07):1640-1670.

👨‍💻4 Matlab代码

主函数部分代码:

%%Introduction to the ELM run script
%Please the change the arguments according to your needs

%% important arguments for the script
activationFunction = 'linear';
dataFile = 'newstocks.txt';
rowsToSkip = 1;
columnsToSkipFromLeft = 1; 
columnsToSkipFromRight = 1;
hiddenLayerSize = 10;
trainingPercentage = 50;
daysToPredict = 5;

%% data loading and preprocessing
% load data
pureData = csvread(dataFile,rowsToSkip,columnsToSkipFromLeft);

% acquire X
X = pureData(daysToPredict:end,1:end - columnsToSkipFromRight);

% get number of entries and features
[nEntries, nFeatures] = size(X);

% acquire Y 
Y = pureData(1:nEntries,1:nFeatures);

% finding split points in data
percTraining = trainingPercentage/100; 
endTraining  = ceil(percTraining * nEntries);

% dividing X and Y
% training data 
trainX = X(1:endTraining,:); 
trainY = Y(1:endTraining,:);

% testing data
testX = X(endTraining+1:end,:);
testY = Y(endTraining+1:end,:);

%% creation and training of ELM model

% create ELM
ELM = ELM_MatlabClass(nFeatures,hiddenLayerSize,activationFunction);

% train ELM on the training dataset
ELM = train(ELM,trainX,trainY);

%% validation of ELM model
predictionTest = predict(ELM,testX);
disp('Statistics when predicting on testing data');
fprintf('Testing Rsquare(close to 1 means nice prediction) = %3.3f\n',computeR2(testX,predictionTest));
fprintf('Testing Root mean square error of open price = %3.3f\n',computeRMSE(testX(:,1),predictionTest(:,1)));
fprintf('Testing Root mean square error of high price = %3.3f\n',computeRMSE(testX(:,2),predictionTest(:,2)));
fprintf('Testing Root mean square error of low price = %3.3f\n',computeRMSE(testX(:,3),predictionTest(:,3)));
fprintf('Testing Root mean square error of close price = %3.3f\n',computeRMSE(testX(:,4),predictionTest(:,4)));

% compute and report accuracy on training dataset
predictionTrain = predict(ELM,trainX);
disp('Statistics when predicting on training data');
fprintf('Training Rsquare(close to 1 means nice prediction) = %3.3f\n',computeR2(trainX,predictionTrain));
fprintf('Training Root mean square error of open price = %3.3f\n',computeRMSE(trainX(:,1),predictionTrain(:,1)));
fprintf('Training Root mean square error of high price = %3.3f\n',computeRMSE(trainX(:,2),predictionTrain(:,2)));
fprintf('Training Root mean square error of low price = %3.3f\n',computeRMSE(trainX(:,3),predictionTrain(:,3)));
fprintf('Training Root mean square error of close price = %3.3f\n',computeRMSE(trainX(:,4),predictionTrain(:,4)));

%% sensitivity analysis on number of hidden neurons
hiddenLayerSize    = 1:10:100;
trainR2   = zeros(size(hiddenLayerSize));
testR2   = zeros(size(hiddenLayerSize));
for i = 1 : numel(hiddenLayerSize)
    % create ELM for classification
    ELM = ELM_MatlabClass(nFeatures,hiddenLayerSize(i),activationFunction);
    % train ELM on the training dataset
    ELM = train(ELM,trainX,trainY);
    Yhat = predict(ELM,trainX);
    trainR2(i) = computeR2(trainX,Yhat);
    % validation of ELM model
    Yhat = predict(ELM,testX);
    testR2(i) = computeR2(testX,Yhat);
end

% plot results of accuracy with different sizes of the hidden layer
figure;
plot(hiddenLayerSize,[trainR2;testR2],'-o');
xlabel('Number of Hidden Neurons');
ylabel('R square error');
legend({'training','testing'},'Location','southeast');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EPICS -- 使用asynPortDriver类编写示一个示例程序

本示例展示了如何使用asynPortDriver类编写一个EPICS端口驱动程序的示例。 这个驱动程序参数库中一个有5个参数,分别支持5个EPICS记录。 如下是具体步骤: 1) 用makeBaseApp.pl脚本建立这个IOC应用程序的框架: [blctrlmain-mach…

IDEA中如何实现git的cherry-pick可视化操作?

目录 问题现象: 问题分析: 解决方法: 拓展:如何回退提交记录? 问题现象: 今天在学习了git的cherry-pick功能,于是引出了一个问题: IDEA中如何实现git的cherry-pick可视化操作&am…

【Docker学习教程系列】7-如何将本地的Docker镜像发布到阿里云

在上一篇中,我们使用docker commit 命令,创建了一个带有vim的Ubuntu镜像。那么怎么将这个镜像分享出去呢?本文就来讲解如何将本地的docker镜像发布到阿里云上。 本文主要内容: 1:本地镜像发布到阿里云流程 2&#xf…

Linux网络原理与编程(4)——第十四节 传输层协议

目录 前置知识 再谈端口号 几个函数 netstat telnet UDP报文 UDP协议端格式 UDP首部: UDP的特点 UDP的缓冲区 TCP报文详解 Tcp报头详解 传输层是在应用层的下面一层,我们在讲解传输层协议之前,先来说一说一些前置知识即命令函数等…

看完就会flink基础API

文章目录一、执行环境(Execution Environment)1、创建执行环境2、执行模式(Execution Mode)3、触发程序执行二、源算子(Source)1、数据源类准备2、从集合中读取数据3、从文件中读取数据4、从Socket中读取数据5、从Kafka中读取数据…

ISCSLP 2022 Program|希尔贝壳邀您参加第十三届中文口语语言处理国际会议

第十三届中文口语语言处理国际会议将于2022年12月11-14日(本周日~下周三)正式开启,本次会议中的部分Session将通过语音之家视频号进行线上直播,欢迎大家参加! 官网:www.iscslp2022.org 大会简介 中文口语…

ABAP学习笔记之——第十二章:SALV

一、概要 在Net Weaver 2004 平台上集合了利用函数和 GRID 的功能发布的 SALV 包程序 (SALV也称为 New ALV)。SALV 可以像利用函数生成 ALV 的不用创建屏幕就可以调用的全屏式ALV,还可以利用控制器在屏幕的控制器中显示 ALV。利用GRID 的ALV 虽然不能注册成 Batch …

速卖通知识产权规则介绍,如何才能规避侵权的问题?

最近有商家咨询到我,关于速卖通对商品知识产权是怎么评判的,今天就来给大家科普一下平台关于知识产权的规则介绍 速卖通平台严禁用户未经授权发布、销售涉嫌侵犯第三方知识产权的商品或发布涉嫌侵犯第三方知识产权的信息。 若卖家发布涉嫌侵犯第三方知…

从股票市场选择配对的股票:距离计算方法

我们来看看如何定义距离的计算方法。 回想一下,在共同趋势模型中,协整的必要条件是从共同趋势得到的新息序列必须完全相关。APT中的共同因子回报就理解成是从共同趋势得到的新息序列,因此,新息序列之间的相关系数就是共同因子回报…

网关性能大PK,Spring Cloud Gateway让人大失所望

现在的架构基本都是使用微服务的,而网关作为微服务的统一门户在架构模式中用得越来越多,API网关是所有客户端的单一入口点。 API网关模式是微服务体系结构的一个很好的起点,因为它能够将特定的请求路由到我们从整体上分离的不同服务。事实上…

嘿嘿嘿,10个我经常逛的“小网站”,不骗人

反思一下,为什么你会点进来~ 咳咳,步入正题。 工欲善其事必先利其器,你们的收藏夹里收藏了多少“小网站”?今天和大家分享10个我压箱底的效率工具/平台,现在用不上不要紧,赶紧收藏最关键! 1.G…

【产品设计】APP常见的6种图片浏览模式

六种是指比较常见的图片浏览模式,是在这四种的基础上加上手势来实现另一种读图方式,这里不绝对说就这么几种,那么就谈谈个人对每种图片浏览模式说说自己在实际使用和工作中的一些理解,以及这些模式在实际设计中,哪一种…

智能聊天机器人––ChatGPT初体验

最近几天,由OpenAI公司发布的ChatGPT聊天机器人火了,小杨也怀着对新鲜事物的好奇,亲自体验了一下这个火爆全网,让人沉迷其中无法自拔的ChatGPT聊天机器人,经过体验,我只想用一个字来表达我的感受&#xff0…

【LeetCode每日一题】——142.环形链表 II

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【题目进阶】九【时间频度】十【代码实现】十一【提交结果】一【题目类别】 链表 二【题目难度】 中等 三【题目编号】 142.环形链表 II 四【题目描述】 …

Java百度地图全套教程(地图找房、轻骑小程序、金运物流等)

课程简介: 本课程基于百度地图技术,将企业项目中地图相关常见应用场景的落地实战,包括有地图找房、轻骑小程序、金运物流等。同时还讲了基于Netty实现高性能的web服务,来处理高并发的问题。 学完本课程能够收获:百度…

支持本地挂载的网盘文件列表工具AList

什么是 Alist? AList 是一个支持多存储的文件列表程序,使用 Gin 框架和 Solidjs 库。可以将常见的 18 种网盘整合在一起,并支持 WebDAV 客户端访问。 之前老苏写过一篇 Alist, 但此 Alist 非彼 Alist,之前的 A 应该是 …

React基础知识(React基本使用、JSX语法、React模块化与组件化)(一)

系列文章目录 文章目录系列文章目录一、React简介1.1 React的特点1.2 React高效的原因二、React基本使用2.1 引入react相关js库2.2 创建虚拟DOM的两种方法2.3 虚拟DOM和真实DOM三、JSX基本使用3.1 jsx使用四、React模块化与组件化4.1 函数式组件4.2 类式组件一、React简介 1.英…

Kafka消费者组消费进度监控

针对Kafka消费者,重要的就是监控消费进度或者是消费的滞后程度,有个专业名词 消费者 Lag 或 Consumer Lag。 滞后程度(Consumer Lag)是指消费者当前落后生产者的程度。比如Kafka 生产者向某主题成功生产了 100 万条消息&#xff0…

一个.NetCore前后端分离、模块化、插件式的通用框架

今天给大家推荐一个基于.NET 6实现的快速开发平台。采用模块化插件式开发,前后端分离,开箱即用。 项目简介 这是一个开箱即用的快速开发平台,前后端分离架构,支持插件式开发,支持工作流、可视化表单功能。系统基础功…

Qt 快速读写Excel指南

Qt Windows 下快速读写Excel指南 很多人搜如何读写excel都会看到用QAxObject来进行操作,很多人试了之后都会发现一个问题,就是慢,非常缓慢!因此很多人得出结论是QAxObject读写excel方法不可取,效率低。 后来我曾试过用…