1.软件版本
MATLAB2021a
2.本算法理论知识
通过MATLAB对BP神经网络,基于遗传优化的BP神经网络,基于改进遗传优化的BP神经网络以及基于改进遗传优化的组合BP神经网络等多种算法的股价预测性能。从仿真结果可知,基于改进遗传优化的组合BP神经网络性能略优于改进遗传优化的BP神经网络,而比起传统的BP神经网络预测算法和基于传统遗传优化的BP神经网络预测算法,具有较大的性能优势。
3.核心代码
clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'func_GA\'
%本程序是使用matlab自带BP网络,实现股票预测,用来最后改进算法对比的
load data.mat
%收盘价格
C = OHLC(:,4);
Mins = min(C);
Maxs = max(C);
C = (C-Mins)/(Maxs-Mins);
LEN = 10;
%样本的划分
for i = 1:length(C)-LEN
Price1(:,i) = C(i:i+LEN-1);
Price2(i) = C(i+LEN);
end
%训练样本
L1 = floor(0.6*length(Price2));
for i = 1:L1
train_data(:,i) = Price1(:,i);
train_aim(i) = Price2(i);
end
%测试样本
L2 = length(Price2) - L1;
for i = 1:L2
test_data(:,i) = Price1(:,i+L1);
test_aim(i) = Price2(i+L1);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%如下的是改进BP网络算法
%定义神经网络的各个层的个数
Num_In = LEN;
Num_Hidden = 5;
Num_Out = 1;
%构建BP网络
net = newff(train_data,train_aim,Num_Hidden);
ERR1 = [];
ERR2 = [];
ERR3 = [];
for j = 1:5
j
%通过改进遗传算法优化BP参数
net = func_newGA(net,Num_In,Num_Hidden,Num_Out,train_data,train_aim);
%网络训练
net.trainParam.showWindow = 0;
net = train(net,train_data,train_aim);
outputs = sim(net,test_data);
d1 = test_aim*(Maxs-Mins) + Mins;
d2 = outputs*(Maxs-Mins) + Mins;
ERR1 = [ERR1,mean(abs(d1-d2)./d2) ];
ERR2 = [ERR2,mean((abs(d1-d2)./d2).^2) ];
ERR3 = [ERR3,std((abs(d1-d2)./d2).^2) ];
end
figure;
plot(d1,'b');
hold on
plot(d2,'r');
legend('真实股价','预测股价');
xlabel('时间(days)');
ylabel('收盘价格对比');
disp('平均误差:');
mean(ERR1)
disp('平方差:');
mean(ERR2)
disp('均方差:');
mean(ERR3)
4.操作步骤与仿真结论
算法 | 平均误差 | 平方差 | 均方差 |
BP神经网络 | 0.0343 | 0.0032 | 0.0026 |
遗传优化BP神经网络 | 0.0191 | 0.00056 | 0.000682 |
自适应遗传优化BP神经网络 | 0.0165 | 4.214e-04 | 5.69e-04 |
自适应遗传优化组合BP神经网络 | 0.0160 | 4.00e-04 | 5.40e-04 |
5.参考文献
[1]李超. 基于自适应遗传算法的BP神经网络预测研究及应用[D]. 山西师范大学.
A06-34
6.完整源码获得方式
方式1:微信或者QQ联系博主