600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【股价预测】基于matlab遗传算法优化BP神经网络预测股价【含Matlab源码 1250期】

【股价预测】基于matlab遗传算法优化BP神经网络预测股价【含Matlab源码 1250期】

时间:2021-11-12 17:36:59

相关推荐

【股价预测】基于matlab遗传算法优化BP神经网络预测股价【含Matlab源码 1250期】

一、遗传算法简介

1 引言

2 遗传算法理论

2.1 遗传算法的生物学基础

2.2 遗传算法的理论基础

2.3 遗传算法的基本概念

2.4 标准的遗传算法

2.5 遗传算法的特点

2.6 遗传算法的改进方向

3 遗传算法流程

4 关键参数说明

二、BP神经网络简介

1 BP神经网络预测原理简介

BP 神经网络是一种多层前馈神经网络,常用的为输入层-单隐含层-输出层的三层结构,如下图所示。

BP神经网络训练的主要思想:输入的信号特征数据先映射到隐含层(激活函数实现),再映射到输出层(默认采用线性传递函数),得到期望输出值。将期望输出值和实际测量值做比较,计算误差函数J,再将误差反向传播,通过梯度下降等算法来调节BP网络的权值和阈值。重复该过程,直到满足设定的目标误差或者最大迭代次数等终止准则,停止训练。

二、部分源代码

clear allclcclose alltic%% 全局变量global pnglobal tnglobal Rglobal S2global S1global SS1 = 12;%% 数据处理load data.matX=xlsread('数据.xls');data = [data X(:,end)];% 85%用于训练,15%进行预测nn = floor(0.85*size(data,1));input=data(1:nn,1:3)';output=data(1:nn,end)';input_test=data(nn+1:end,1:3)';output_test=data(nn+1:end,end)';M =size(input,2); %输入节点个数N =size(output,2);%输出节点个数%% 训练数据p = input;t = output;[pn,minp,maxp,tn,mint,maxt] =premnmx(p,t);%归一化%% 建立神经网络net = newff(minmax(pn),[S1,1],{'tansig','purelin'});net.trainParam.show = 50;net.trainParam.lr = 0.1;net.trainParam.epochs = 1000;net.trainParam.goal =1e-10;[net,tr] = train(net,pn,tn);%% 遗传操作R = size(p,1);S2= size(t,1);S = R*S1+S1*S2+S1+S2;aa = ones(S,1)*[-1 1];popu = 50;initPpp = initializega(popu,aa,'gabpEval');gen = 500;[x,endPop,bPop,trace] = ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,...'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);%% 画图迭代图figure(1)plot(trace(:,1),1./trace(:,3),'r-');hold ongrid onplot(trace(:,1),1./trace(:,2),'b-');xlabel('迭代数')ylabel('均方误差')title('均方误差曲线图')figure(2)plot(trace(:,1),trace(:,3),'r-');hold ongrid onplot(trace(:,1),trace(:,2),'b-');xlabel('迭代数')ylabel('适应度函数值')title('适应度函数迭代曲线图')[W1,B1,W2,B2,val] = gadecod(x);W1;W2;B1;B2;net.IW{1,1} = W1;net.LW{2,1} = W2;net = train(net,pn,tn);k = input_test;kn = tramnmx(k,minp,maxp);s_bp = sim(net,kn);s_bp22 = postmnmx(s_bp,mint,maxt);tocload gabp.matxk=2;figureplot(1:length(output_test),output_test,'r-*',1:length(output_test),s_bp22,'b-o','linewidth',xk)grid on%加网格legend('真实值','预测值')%图例title('神经网预测真实值与预测值对比')%标题xlabel('样本')%横坐标标题ylabel('成交额')%纵坐标标题xk = 2;error2 = abs(s_bp22 - output_test)./output_test.*100;figure%画图plot(1:length(error2),error2,'ko-','linewidth',xk)%测试输出与真实值的对比图grid on%加网格title('测试样本相对误差图%')%标题xlabel('样本')%横坐标标题ylabel('相对误差%')%纵坐标标题zh_gabp = [output_test ;s_bp22; error2]save zh_gabp zh_gabpfunction [W1,B1,W2,B2,val] = gadecod(x)global pn;global tn; global R; global S2;global S1;global Sfor i = 1 : S1for k = 1 : RW1(i,k) = x(R*(i-1)+k);endendfor i = 1 : S2for k = 1 : S1W2(i,k) = x(S1*(i-1)+k+R*S1);endendfor i = 1: S1B1(i,1) = x((R*S1+S1*S2)+i);endfor i = 1: S2B2(i,1) = x((R*S1+S1*S2+S1)+i);endA1 = tansig(W1*pn,B1);A2 = purelin(W2*A1,B2);SE = sumsqr(tn-A2);val = 1/SE;%% 训练模型[net,tr] = train(net,pn,tn);%训练网络nihe = sim(net,pn);%训练输出nihe2 = postmnmx(nihe,mint,maxt);%训练输出反归一化%% 预测s_bp = sim(net,kn);%预测s_bp2 = postmnmx(s_bp,mint,maxt);%预测输出反归一化s_bp2 = s_bp2';%转置figure%画图xk = 2;plot(1:length(outtest),outtest,'r--',1:length(outtest),s_bp2,'b.-','linewidth',xk)%测试输出与真实值的对比图grid on%加网格legend('真实值','预测值')%图例title('神经网预测真实值与预测值对比')%标题xlabel('样本')%横坐标标题ylabel('成交额')%纵坐标标题%% 误差分析j_error = abs(outtest - s_bp2'); %绝对误差x_error = abs(outtest - s_bp2')./outtest.*100;%相对误差figure%画图plot(1:length(x_error),x_error,'ko-','linewidth',xk)%测试输出与真实值的对比图grid on%加网格title('测试样本相对误差图%')%标题xlabel('样本')%横坐标标题ylabel('相对误差%')%纵坐标标题%% 显示disp('测试真实值')outtestdisp('测试预测值')s_bp2disp('相对误差%')x_errorzh_bp = [outtest; s_bp2'; x_error];save zh_bp zh_bp

三、运行结果

四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,.

[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,.

[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,.

[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,.

[5]方清城.MATLAB Ra神经网络设计与应用28个案例分析[M].清华大学出版社,.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。