matlab BP神经网络预测下一组数据问题

如题,输入p为n行6列,下面代码我仅举例了4行,实际有很多行。现需要进行matlab使用BP神经网络编程,将以前的所有样本进行训练,预测下一组将出现的6个数据。实际上就是... 如题,输入p为n行6列,下面代码我仅举例了4行,实际有很多行。
现需要进行matlab使用BP神经网络编程,将以前的所有样本进行训练,预测下一组将出现的6个数据。
实际上就是已知前N组样本,预测下一组样本的数值。

代码如下:
%输入数据
clear;
clc;
p=[23 25 26 27 29 26;
22 24 26 27 25 18;
12 13 15 18 19 22;
16 17 15 18 19 12] %实际p有很多行数据,此处仅列举4行。

[m,n]=size(p);
pn=p(1:m-1,:); %此处将第一行到倒数第二行作为训练样本

pn=pn*0.01; %此处因为知道pn输入所有数介于0到99之间,因此直接乘以0.01进行数据归一。

tn=p(m,:); %最后一行作为验证结果
tn=tn*0.01; %此处因为知道pn输入所有数介于0到99之间,因此直接乘以0.01进行数据归一。
pn=pn';
tn=tn'; %对pn和tn进行转置

net=newff(minmax(pn),[18,6],{'tansig','logsig'},'trainbr'); %建立网络

net.trainParam.show = 50; %多少轮显示一回
net.trainParam.lr = 0.05; %学习速度
net.trainParam.epochs = 800; %最大训练轮数
net.trainParam.goal = 1e-5; %目标函数误差

%开始训练==============
[net,tr]=train(net,pn,tn);

pn=p(2:m,:); %此处将第二行到最后一行作为预测样本 ----------请问此处如何处理,能够达到让pn等于所有的已知样本来作为预测样本输入?????
ppn=pp*0.001;
ppn=ppn';

%网络输出结果=========
ttn=sim(net,ppn);

ttn=ttn'*100; %数据进行转置并还原真实值

运行上述代码后,发现结果如下:
ans =

2.2222e+014

不知道问题出在哪里,为什么不能得到我想要的下一组数据呢?

实际上我只需要训练已知所有样本,预测得到下一组样本即可。

不知代码是否思路正确,或者有更好的思路或建议的话,请高手指点。万分感谢。
展开
 我来答
匿名用户
2014-02-20
展开全部
楼主用的MATLAB是什么版本?
这段代码在2008b中会报错,虽然可以排除,但修改后在你的系统上未必兼容,所以最好用和你比较接近的版本来调试分析。
wfmjwz121
2014-02-19 · 超过10用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:26.9万
展开全部
-请问此处如何处理,能够达到让pn等于所有的已知样本来作为预测样本输入????

不知道问题出在哪里,为什么不能得到我想要的下一组数据呢?矛盾啊

http://wenku.baidu.com/link?url=5sPeHwbbotF80NS4oh94zeMshhP68JhbRIqTcBeeAfJ9ZnVheg-_W07sq789GvER80S4IieJ8VRjoh7y-txeT1nFpw5Wi4YX9c9PaogxfOS
更多追问追答
追问
我查了很多资料,一般情况下实例中输入p可以是多个维度,可是输出n一般是1维的,所以我才有此疑问。
追答
n完全可以是多维的.
新版newff与旧版newff调用语法对比

比如输入input(6*1000),输出output为(4*1000),那么

旧版定义:net=newff(minmax(input),[14,4],{'tansig','purelin'},'trainlm');
新版定义:net=newff(input,output,14,{'tansig','purelin'},'trainlm');
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式