如何用MATLAB的BP神经网络做股票预测?

2024-05-17

1. 如何用MATLAB的BP神经网络做股票预测?

算法选择问题,我觉得3层够了吧,但是多少个节点看数据量了!训练过程算法选择也很重要!主要是这里个关键点吧

如何用MATLAB的BP神经网络做股票预测?

2. bp神经网络股票价格预测的MATLAB编程

P=[];‘输入,开盘价,最高价,最低价,收盘价成交量依次5天的数据’
T=[];’输出,即第二日的收盘’
net=newff(minmax(P),[7,1],{'tansig','logsig'},'traingdx'); 
net.trainParam.epochs=1000; ‘最大训练次数,根据需要可自行调节’
net.trainParam.goal=0.01; ‘误差’
net.trainParam.lr=0.01; ‘学习率’
net=train(net,P,T); ‘训练网络’
test=[];‘待预测数据输入’
out=sim(net,test); ‘仿真预测’
我的这个程序没有进行初始化,你还需要先将数据进行初始化后才能算。

3. 求用matlab编BP神经网络预测程序

P=[。。。];输入T=[。。。];输出

%  创建一个新的前向神经网络 
net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')

%  当前输入层权值和阈值
inputWeights=net_1.IW{1,1}
inputbias=net_1.b{1}
%  当前网络层权值和阈值
layerWeights=net_1.LW{2,1}
layerbias=net_1.b{2}

%  设置训练参数
net_1.trainParam.show = 50;
net_1.trainParam.lr = 0.05;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 10000;
net_1.trainParam.goal = 1e-3;

%  调用 TRAINGDM 算法训练 BP 网络
[net_1,tr]=train(net_1,P,T);

%  对 BP 网络进行仿真
A = sim(net_1,P);
%  计算仿真误差 
E = T - A;
MSE=mse(E)

x=[。。。]';%测试
sim(net_1,x) 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
不可能啊 我2009

求用matlab编BP神经网络预测程序

4. BP神经网络MATLAB编程。

隐层个数及训练次数可以在定义网络时自己设定,图形的话是系统自己生成的.
题目的意思是00得到0,01得到1,10得到1,11得到0。前者为输入,后者为输出.
所以就这样构造:
%输入 一共四组,每组两个 
p=[0,0;0,1;1,0;1,1];
            
%输出:
t=[0,1,1,0];

构造神经网络:
net=newff(p',t,{10},{'tansig'},'trainlm');
%上面这句话的意思是建立新的神经网络net,newff(输入,输出,{隐层数量及该层的节点个数},{传输函数名},训练函数);{10}代表单隐层,并且该层节点为10个,如果想显示多隐层,比如双隐层,{10,15}这样就行,传输函数也要相应增加,比如{'tansig','logsig'}节点数和传输函数名可以随意调整,目的当然是让预测结果更精确

%之后,
net.trainParam.goal = 0.00001; %设置精确度

net.trainParam.epochs = 5000;  %设置训练次数,5000次
    
[net,tr] = train(net,p',t);  %训练开始

。。。。。。。。

这样就可以训练了,过几秒后图片matlab会自动生成

最后想测试训练结果的话,比如你想打00进去看它是不是也给0
p=[0 0];
a=sim(net,p')

。。。sim就是让net去预测结果

差不多就是这样,我用的是2009a版本,有段时间没用了可能格式上稍微有点出入,希望可以帮到你

5. 关于matlab的BP神经网络:

比较新的版本,比如说matlab 2010以上的,都不需要装神经网络的工具箱
建立网络步骤:
1、数据归一化:输入的数据通常为P,输出数据通常为T,数据格式为:每列对应一个样本,归一化常用函数:mapminmax
[pn,ps]=mapminmax(p);  [tn,ts]=mapminmax(t)
pn,tn是归一化后的数据,ps, ts是归一化的结构体,在后面反归一化预测值很有用。
2、建立网络并设定参数
net=newff(pn,tn,[    ])    中括号里面的是输入层数,隐含神经元数,输出层数,还可以设定节点传递函数等等的参数
net.trainparam.epochs=1000       训练的次数
net.trainparam.goal=0.0001    训练的误差目标值
net.trainparam.lr=0.1   学习速率,通常在0到1之间,过大过小都不好
3、预测并分析
an=sim(net, pn)
ouput=mapminmax('reverse', an, ts)   根据之前归一化的标准,对预测结果进行反归一化,得到结果
error=output-t     这里是对误差进行输出,也可以用error=sum(asb(output-t))
当然也可以作图,比如说:
plot(p,t,'-o')
hold on
plot(p, output,'-*')
看预测值和真实值能否吻合
还可以在神经网络训练完成后的对话框中看MSE和R方
还有很多方法提高神经网络的精度,以上程序没有经过MATLAB调试,但大致过程如上

纯手打,希望采纳!

关于matlab的BP神经网络:

6. 求MATLAB的BP神经网络预测程序

%由于数据比较大,我又懒得用归一化,所以直接把数据降了3个数量级,
%不过我觉得应该没问题,但用归一化结果应该更准确些。。
%由于初始权值和阀值均是随机给的,所以每次仿真都有点点不同,这是正常的。
p=[1183 1303 1278;1303 1278 1284;1278 1284 1187 ;...
    1284 1187 1154;1187 1154 1267;1154 1267 1241;...
    1267 1241 1302;1241 1302 1195;1302 1195 1256]'*0.001;
t=[ 1284 1187 1154 1267 1241 1302 1195 1256 1348]*0.001;
net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingda');
net.trainParam.goal=0.001;
net.trainParam.show=20;
net.trainParam.epochs=1000;
net.trainParam.min_grad=1e-10;
net.trainParam.mc=0.95;
[net,tr]=train(net,p,t);
t1=sim(net,[1302 1195 1256]'*0.001);
t2013=t1*1000%2013 的 预测 数据
运行结果:
t2013 =
       1301.9

7. matlab程序 BP神经网络预测 程序如下

P=[。。。];输入T=[。。。];输出

%  创建一个新的前向神经网络 
net_1=newff(minmax(P),[10,1],,'traingdm')

%  当前输入层权值和阈值
inputWeights=net_1.IW
inputbias=net_1.b
%  当前网络层权值和阈值
layerWeights=net_1.LW
layerbias=net_1.b

matlab程序 BP神经网络预测 程序如下

8. matlab BP神经网络

从原理上来说,神经网络是可以预测未来的点的。
实际上,经过训练之后,神经网络就拟合了输入和输出数据之间的函数关系。只要训练的足够好,那么这个拟合的关系就会足够准确,从而能够预测在其他的输入情况下,会有什么样的输出。
如果要预测t=[6 7]两点的R值,先以t=[1 2 3 4 5]作为输入,R=[12 13 14 14 15]作为输出,训练网络。训练完成之后,用t=[2 3 4 5 6]作为输入,这样会得到一个输出。不出意外的话,输出的数组应该是[13 14 14 15 X],这里的X就是预测t=6时的R值。然后以t=[3 4 5 6 7]作为输入,同理得到t=7时候的R值。
根据我的神经网络预测,t=6时,R=15,t=7时,R=15。我不知道这个结果是否正确,因为神经网络通常需要大量的数据来训练,而这里给的数据似乎太少,可能不足以拟合出正确的函数。