⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 question_a_bp.m

📁 基于BP神经网络的股票预测程序.... 有部分是数据处理片段,可能有点乱...
💻 M
字号:
%建立BP神经网络
%P为输入矢量,即是股市点数的日期,以yyyymmdd形式作为一个数据 
%T为目标矢量,即是当日的收盘点数
[pn,minp,maxp,tn,mint,maxt]=premnmx(P,T); 
% 创建一个新的前向神经网络
net_1=newff([1,1429],[100,1],{'tansig','purelin'},'traingdm')

%设置训练参数
netbp.trainParam.lr=1.5; %设置学习率
net_1.trainParam.show=200;%每100步显示一次
net_1.trainParam.goal=1e-7;%训练目标,精度
net_1.trainParam.epochs=3000;%训练次数
net_1.trainParam.min_grad=1e-3;%最小性能梯度
net_1.trainParam.lr_inc=1.1; %将学习率增量因子设置为1.1
net_1.trainParam.lr_dec=1.1; %将学习率减量因子设置为0.8
%调用train算法训练
[net_1,tr]=train(net_1,pn,tn);

%对BP网络进行仿真
anewn=sim(net_1,pn);
%数据还原 
anew=postmnmx(anewn,mint,maxt);







%anew与tn做图对比
subplot(1,2,1),plot(T),legend('真实数据',1)
hold,subplot(1,2,1),plot(anew,'r')
title('真实数据与模拟数据对比')
legend('真实数据','模拟数据',1)
%绘制误差
subplot(1,2,2)
plot(T-anew)
title('误差分析')


% 对新数据进行分析,记为pnew
pnewn=tramnmx(pnew,minp,maxp);
anewn=sim(net_1,pnewn);                               %对BP网络进行仿真
anew=postmnmx(anewn,mint,maxt);
plot(pnew)
hold
plot(tar)



% %日期数据转换
year=double(uint16(P/10000));
month=double(uint16((P-10000*year)/100));
day=P-10000*year-100*month;
P=(year-2005)*365+month*30+day-180;






%Change the order of P and T
[m,n]=size(P);
for i=1:n
    Q(1,i)=P(1,n-i+1);
end
P=Q;


[m,n]=size(T);
for i=1:n
    Q(1,i)=T(1,n-i+1);
end
T=Q;



%polyfit多项式拟合
A=polyfit(P,T,6);
Z=polyval(A,P);
plot(P,T,'k',P,Z,'r')
pp = polyder(A);     % 对拟合得到的多项式求导,得到导函数pp   
dy2 = polyval(pp,P)  % 计算导函数pp在x的导数值 
plot(P,dy2,'r')


% 三次样条插值方法 
cs = csapi(P,T);    % 生成三次样条插值函数cs 
pp = fnder(cs);     % 计算三次样条插值函数cs的导函数pp 
dy3 = fnval(pp,P)   % 计算导函数pp在x的导数值
plot(P,dy3,'k')



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -