> 文章列表 > 基于卷积神经网络进行股价预测(Matlab代码实现)

基于卷积神经网络进行股价预测(Matlab代码实现)

基于卷积神经网络进行股价预测(Matlab代码实现)

       目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

CNN是一种人工神经网络,CNN的结构可以分为3层:

  1. 卷积层(Convolutional Layer) - 主要作用是提取特征。

  2. 池化层(Max Pooling Layer) - 主要作用是下采样(downsampling),却不会损

  3. 坏识别结果。

  4. 全连接层(Fully Connected Layer) - 主要作用是分类。

我们可以拿人类来做类比,比如你现在看到小鸟,人类如何识别它就是鸟的呢?首先你判断鸟的嘴是尖的,全身有羽毛和翅膀,有尾巴。然后通过这些联系起来判断这是一只鸟。而CNN的原理也类似,通过卷积层来查找特征,然后通过全连接层来做分类判断这是一只鸟,而池化层则是为了让训练的参数更少,在保持采样不变的情况下,忽略掉一些信息。

使用CNN来处理时间序列数据产生的预测值总体来说还行,但与真实值存在一定出入。对于股票来说,影响股价波动因素繁多,单单从历史股价进行预测未来股价是不足够的,这也符合弱式有效市场假说,即技术分析失败;另一方面,本次实验采用的网络结构较简单,采用更强大的网络进行回归预测任务则会得到更好的效果。

📚2 运行结果

主函数部分代码:

% rbf_stockpredict.m

%% 清除工作空间中的变量和图形

clear,clc

close all

load elm_stock

%% ????

t1 = 1 : 280;

%t1 = t1';

ty = zeros(1,280);

for i=1:280

    ty(1,i) = price(i);

end

%% ????

t = 1:57;

%t = t';

y = zeros(1,57);

for i=1:57

    y(1,i) = price(i+280);

end

%% ???????

net = newrb(t1, ty);

%% ????

testy = sim(net, t);

%% ??

figure('Name', '???');

plot(t, y, 'b-');

hold on;

plot(t, testy, 'r--');

legend('initial data','RBF prediction');

title('RBF prediction');

hold off

grid on

🎉3 参考文献

​[1]刘天阳.基于注意力机制的CNN-LSTM模型股价趋势预测[J].科技资讯,2022,20(23):1-5.DOI:10.16661/j.cnki.1672-3791.2205-5042-2715.

👨‍💻4 Matlab代码