matlab怎么利用神经网络做预测

谷歌人工智能写作项目:小发猫

如何利用matlab进行神经网络预测

matlab带有神经网络工具箱,可直接调用,建议找本书看看,或者MATLAB论坛找例子常见的神经网络结构

核心调用语句如下:%数据输入%选连样本输入输出数据归一化[inputn,inputps]=mapminmax(input_train);[outputn,outputps]=mapminmax(output_train);%%BP网络训练%%初始化网络结构net=newff(inputn,outputn,[88]);net.trainParam.epochs=100;=0.01;=0.01;%网络训练net=train(net,inputn,outputn);%%BP网络预测%预测数据归一化inputn_test=mapminmax(‘apply’,input_test,inputps);%网络预测输出an=sim(net,inputn_test);%网络输出反归一化BPoutput=mapminmax(‘reverse’,an,outputps);%%结果分析。

为什么matlab的BP神经网络曲线拟合的时候没问题,预测的时候误差这么大

这是神经网络特性导致的,与matlab没关系。一方面,如果你的网络层选的神经元的个数和层数不合适,就会导致这种结果;另一方面,如果你的训练样本选择的不合适,或者数据表达的太快,也会导致这种问题。

前一个方面根据经验,后一个可以做成神经元的参数可调的。

用MATLAB神经网络进行函数拟合后,拟合的函数表达式有吗?

神经网络一般是没有表达式的哈,但是只要你的参数每次都给的一样,在多次运行后它的多次结果会有一定的相似,这就是我们可以用它做拟合后的预测的原理,因为神经网络一般每次初始值都是随机值,所以结果也会有区别的。

在表达拟合函数的时候,我们只要要列出它的参数取值及拟合模型即可,例如BP中的losig模型,隐层神经元个数,下降速率采用的方法traindx,学习速率0.05,训练最小误差0.001等等。

MATLAB进行人工神经网络拟合求助 140

tic;%计时开始clc;%清屏clearall;%清除所有变量disp(‘输入层神经元个数:3’);%显示输入层神经元个数input=3;disp(‘中间层神经元个数:3’);%显示中间层神经元个数middle=3;disp(‘输出层神经元个数:1’);%显示输出层神经元个数output=1;disp(‘输入模式123及其对应的输出:’);x1=[7.13.22.5];x2=[7.03.42.9];x3=[6.93.63.1];x4=[6.83.82.6];x5=[7.24.02.2];y1=78;y2=65;y3=78;y4=69;y5=72;disp(‘形成一张供调用的向量表:’);X=[x1;x2;x3;x4;x5];%x1,x2,x3,x4,x5向量表X=X/10;Yo=[y1;y2;y3;y4;y5];%y1,y2,y3,y4,y5向量表Yo=Yo/100;disp(‘初始化连接权矩阵:’);w=zeros(input,middle);%输入层与中间层的连接权v=zeros(middle,output);%中间层与输出层的连接权th1=zeros(1,middle);%中间层的阈值th2=zeros(1,output);%输出层的阈值out_middle=zeros(1,middle);%中间层的实际输出out_output=zeros(1,output);%输出层的实际输出delta_output=zeros(1,output);%输出层的差值delta_middle=zeros(1,middle);%中间层的差值disp(‘显示初始化连接权矩阵w:’);w=rands(input,middle);%初始化连接权矩阵w(i,j)disp(w);%显示初始化连接权矩阵w(i,j)disp(‘显示初始化连接权矩阵v:’);v=rand(middle,output);%初始化连接权矩阵v(j,t)disp(v);%显示初始化连接权矩阵v(j,t)disp(‘中间层阈值矩阵th1:’);th1=rand(1,middle);%初始化中间层阈值矩阵th1disp(th1);%显示中间层阈值矩阵th1disp(‘中间层阈值矩阵th2:’);th2=rand(1,output);%初始化输出层阈值矩阵th2disp(th2);%显示中间层阈值矩阵th2sample_bumbers=5;%样本数max_times=10000;%最大训练次数times=0;%训练次数eta=0.1;%学习系数etagamma=0.1;%学习系数gammasample_pointer=0;%样本数指针error=0.02;%误差error_max=0.01;%最大误差fortimes=1:max_times%beginforExternalLoopiferror>error_maxforsample_pointer=1:sample_bumbersX0=X(sample_pointer,:);Y0=Yo(sample_pointer,:);Y=X0*w;%计算中间层的输出:Y=Y-th1;forj=1:middleout_middle(j)=1/(1+exp(-Y(j)));end%计算输出层输出:Y=out_middle*v;Y=Y-th2;fork=1:output%k=1:3out_output(k)=1/(1+exp(-Y(k)));enderror=(Y0(k)-out_output(k))*(Y0(k)-out_output(k))/2;%计算输出层校正误差delta_output:fork=1:output%k=1:3delta_output(k)=(Y(k)-out_output(k))*out_output(k)*(1-out_output(k));end%计算中间层校正误差delta_middle:fork=1:output%k=1:3xy=delta_output*v’;delta_middle=xy*out_middle’*(1-out_middle);end%计算下一次的中间层和输出层之间的连接权v(j,k),阈值th2(k)fork=1:output;forj=1:middlev(j,k)=v(j,k)+eta*delta_output(k)*out_middle(j);endth2(k)=th2(k)+eta*delta_output(k);end%计算下一次的输入层和中间层之间的连接权w(i,j),阈值th1(j)forj=1:middle;fori=1:inputw(i,j)=w(i,j)+gamma*X0(i)*delta_middle(j);endth1(j)=th1(j)+gamma*delta_middle(j);endend%endforifelsebreak;end%endforelseend%endforExternalLoopdisp(‘显示结果:’);disp(‘训练次数times:’);disp(times);disp(‘输出权值w’);disp(w);disp(‘输出权值v’);disp(v);disp(‘全局误差error:’);disp(error);disp(‘运行结束了!

‘);toc;%计时结束,并输出程序的运行时间输出结果为:输入层神经元个数:3中间层神经元个数:3输出层神经元个数:1输入模式123及其对应的输出:形成一张供调用的向量表:初始化连接权矩阵:显示初始化连接权矩阵w:0.5695-0.6483-0.6946-0.05730.4435-0.3178-0.9285-0.05300.2148显示初始化连接权矩阵v:0.19170.73840.2428中间层阈值矩阵th1:0.91740.26910.7655中间层阈值矩阵th2:0.1887显示结果:训练次数times:6输出权值w0.5376-0.6779-0.7311-0.07360.4283-0.3365-0.9406-0.06430.2009输出权值v0.13280.67080.2027全局误差error:0.0097运行结束了!

Elapsedtimeis0.263732seconds.。

matlab 神经网络

net=newff(pr,[3,2],{‘logsig’,’logsig’});%创建一个bp神经网络=10;%显示训练迭代过程=0.05;%学习速率0,05=1e-10;%训练精度net.trainParam.epochs=50000;%最大训练次数net=train(net,p,goal);%训练结果要么接近于1,要么就是0,就这俩类啊,这就是分类结果;每次都有些差异很正常,只要不大。

求一个bp神经网络预测模型的MATLAB程序

BP神经网络预测的步骤:1、输入和输出数据。2、创建网络。fitnet()3、划分训练,测试和验证数据的比例。

net.divideParam.trainRatio;net.divideParam.valRatio;net.divideParam.testRatio4、训练网络。

train()5、根据图表判断拟合好坏。ploterrcorr();parcorr();plotresponse()6、预测往后数据。net()7、画出预测图。

plot()执行下列命令BP_prediction得到结果:[2016,14749.呵呵6798210144042969][2017,15092.847215188667178153991699219][2018,15382.150005970150232315063476562][2019,15398.85769711434841156005859375][2020,15491.935150090605020523071289062]。

matlab神经网络预测程序一点点小问题

net_1是已经训练好的网络(用的是1988-2003的数据)从题目知道网络的输入-输出数据是这样产生的输入P对应输出T1988-2002—>20031989-2003—>20041990-2004—>2005…………1994-2008—>2009以上构成了1994-1988+1=7组输入输出对。

利用P/T进行训练,训练成功(一般还要设一个确认集进行泛化能力的检测,光是训练误差小是不行的)后。sim(net_1,x)这是对网络进行仿真。

在这个仿真函数中,给一个输入,(类似训练时用的输入P,列数可以不同,但行数必须一样),网络就给出你想要的输出。而这个x就是你最后要进行的预测的输入。

由于你预测的是2010年的值,那么输入就是为1995-2009,这样“按道理”,网络就给出了2010年的值明白没?

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

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

];输出%创建一个新的前向神经网络net_1=newff(minmax(P),[10,1],,’traingdm’)%当前输入层权值和阈值inputbias=net_1.b%当前网络层权值和阈值layerbias=net_1.b应该没问题吧。

用Matlab编程BP神经网络进行预测

原理就是:建立网络-数据归一化-训练-预测-数据反归一化。附件是电力负荷预测的例子,可以参考。

BP(BackPropagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。

BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。

BP神经网络模型拓扑结构包括输入层(input)、隐层(hiddenlayer)和输出层(outputlayer)。