用神经网络预测
我是用神经网络进行预测我把前10个数作为输入 第11个数作为输出 2~11作为输入 12作为输出这样训练然后进行预测但是我的预测结果和真实的数据相差特别大不知道这是什么原因 并且我的数据都是相差挺大的请各位帮帮我该怎么解决 小弟在这里先谢谢了 请先将你的处理贴一下.回复 #2 xjzuo 的帖子
clear allclc
load Q.txt
for i=1:50
p(i)=mean(Q(i,:));
end
%训练数据
for i=1:30
for j=1:30
P(j,:)=p(j:9+j);
T(j)=p(10+j);
end
end
P=P';
X=p(1,41:50);
%预测数据
for i=1:10
for j=1:10
A(j,:)=p(30+j:39+j);
end
end
%训练网络 {'tansig','logsig'},'trainscg','learngdm'
net=newff(minmax(P),,{'tansig','logsig'},'trainscg','learngdm'); %建立网络;10为隐层节点数,1为输出节点数,输入节点数不需设置。
net.trainParam.show=10; % 显示训练步长;
net.trainParam.goal=0.001; % 目标误差;
net.trainParam.epochs=2000; % 训练最大步数;
net.trainParam.lr=0.01; % 学习速率;
net=train(net,P,T);
%输出训练后的权值和阈值
iw1=net.IW{1};
b1=net.b{1};
lw2=net.LW{2};
b2=net.b{2};
%仿真预测
out=sim(net,A)
X %实际测得数据
t=1:1:10;
box off;
grid off;
plot(t,out,'b',t,X,'r');%画出二维图形
set(gca,'Xtick',0:1:10,'Ytick',0:.1:1);%设置坐标
title('基于BP网络的设备故障预测');
xlabel('预测次数');
ylabel('预测值');
text(1.5,0.65,'预测曲线(蓝)');
text(1.5,0.6,'实际曲线(红)');
%gtext('预测振动曲线(蓝)与实际测试曲线(红)比较');
%h=legend('预测振动曲线(蓝)与实际测试曲线(红)比较');
%zoom on;
%zoom(0.2);
Q数据
0.0033 0.0045 0.0055 0.0046 0.0027 0.00470.0021 0.0027 0.0032 0.0028 0.0010 0.0014
0.1092 0.1581 0.2263 0.3174 0.2785 0.5316
0.0114 0.0156 0.0189 0.0173 0.0072 0.0107
0.0043 0.0060 0.0082 0.0092 0.0055 0.0108
0.0024 0.0032 0.0038 0.0033 0.0010 0.0015
0.2961 0.4444 0.6891 1.0603 1.2704 2.5330
0.0088 0.0118 0.0135 0.0119 0.0051 0.0084
0.0075 0.0101 0.0119 0.0108 0.0038 0.0051
0.0024 0.0033 0.0039 0.0037 0.0031 0.0063
0.0022 0.0031 0.0041 0.0038 0.0015 0.0024
0.0034 0.0046 0.0053 0.0053 0.0013 0.0015
0.0035 0.0047 0.0052 0.0053 0.0015 0.0021
0.3119 0.4620 0.6973 0.9798 1.0622 2.0919
0.0057 0.0076 0.0083 0.0071 0.0023 0.0032
0.2861 0.4100 0.5948 0.7458 0.6245 1.1257
0.0053 0.0070 0.0078 0.0072 0.0028 0.0044
0.0268 0.0371 0.0474 0.0427 0.0129 0.0152
0.2618 0.3726 0.5245 0.6348 0.4335 0.7681
0.0032 0.0042 0.0046 0.0045 0.0012 0.0016
0.0033 0.0044 0.0049 0.0048 0.0012 0.0016
0.0121 0.0161 0.0186 0.0159 0.0047 0.0061
0.0226 0.0312 0.0401 0.0255 0.0128 0.0218
0.0023 0.0031 0.0036 0.0031 0.0009 0.0013
0.2013 0.2875 0.4186 0.5711 0.4347 0.7943
0.0033 0.0045 0.0055 0.0046 0.0027 0.0047
0.0021 0.0027 0.0032 0.0028 0.0010 0.0014
0.1092 0.1581 0.2263 0.3174 0.2785 0.5316
0.0114 0.0156 0.0189 0.0173 0.0072 0.0107
0.0043 0.0060 0.0082 0.0092 0.0055 0.0108
0.0024 0.0032 0.0038 0.0033 0.0010 0.0015
0.2961 0.4444 0.6891 1.0603 1.2704 2.5330
0.0088 0.0118 0.0135 0.0119 0.0051 0.0084
0.0075 0.0101 0.0119 0.0108 0.0038 0.0051
0.0024 0.0033 0.0039 0.0037 0.0031 0.0063
0.0022 0.0031 0.0041 0.0038 0.0015 0.0024
0.0034 0.0046 0.0053 0.0053 0.0013 0.0015
0.0035 0.0047 0.0052 0.0053 0.0015 0.0021
0.3119 0.4620 0.6973 0.9798 1.0622 2.0919
0.0057 0.0076 0.0083 0.0071 0.0023 0.0032
0.2861 0.4100 0.5948 0.7458 0.6245 1.1257
0.0053 0.0070 0.0078 0.0072 0.0028 0.0044
0.0268 0.0371 0.0474 0.0427 0.0129 0.0152
0.2618 0.3726 0.5245 0.6348 0.4335 0.7681
0.0032 0.0042 0.0046 0.0045 0.0012 0.0016
0.0033 0.0044 0.0049 0.0048 0.0012 0.0016
0.0121 0.0161 0.0186 0.0159 0.0047 0.0061
0.0226 0.0312 0.0401 0.0255 0.0128 0.0218
0.0023 0.0031 0.0036 0.0031 0.0009 0.0013
0.2013 0.2875 0.4186 0.5711 0.4347 0.7943
回复 #2 xjzuo 的帖子
我的怎么误差这么大呀 运行了一下,收敛.而且误差好象并不大.不知你要达到什么精度?
要提高精度可修改goal,或者改用newrbe.
页:
[1]