一、导入数据
filename = 'data';
[data] = xlsread(filename,'A2:B72');
p = data( :,1);
t = data( :,2);
%保存数据到matlab的工作路径里面
save p.mat;
save t.mat;
%赋值给输出p和输入t
p=p';
t=t';
年龄(天) | 重量(mg) |
---|---|
15.00 | 21.66 |
15.00 | 22.75 |
15.00 | 22.30 |
18.00 | 31.25 |
860.00 | 246.70 |
768.00 | 232.12 |
756.00 | 242.57 |
723.00 | 230.77 |
705.00 | 242.40 |
660.00 | 231.00 |
648.00 | 244.30 |
591.00 | 234.70 |
554.00 | 233.90 |
535.00 | 209.70 |
513.00 | 203.30 |
394.00 | 224.82 |
375.00 | 202.63 |
357.00 | 195.31 |
354.00 | 189.70 |
347.00 | 188.38 |
338.00 | 203.23 |
317.00 | 216.41 |
312.00 | 195.10 |
305.00 | 186.80 |
301.00 | 186.70 |
300.00 | 186.09 |
285.00 | 189.66 |
276.00 | 186.26 |
258.00 | 183.40 |
246.00 | 176.13 |
237.00 | 187.07 |
232.00 | 161.29 |
232.00 | 159.98 |
227.00 | 173.73 |
225.00 | 177.68 |
224.00 | 178.86 |
219.00 | 173.54 |
218.00 | 173.03 |
218.00 | 174.18 |
195.00 | 161.10 |
192.00 | 145.72 |
183.00 | 153.22 |
165.00 | 139.81 |
159.00 | 142.15 |
150.00 | 144.50 |
147.00 | 152.20 |
147.00 | 155.30 |
142.00 | 140.58 |
142.00 | 130.68 |
125.00 | 134.90 |
98.00 | 104.30 |
97.00 | 110.00 |
91.00 | 102.90 |
91.00 | 101.70 |
85.00 | 105.00 |
82.00 | 92.50 |
75.00 | 94.60 |
75.00 | 86.10 |
72.00 | 71.90 |
65.00 | 65.31 |
65.00 | 79.51 |
64.00 | 79.09 |
61.00 | 73.09 |
60.00 | 81.00 |
50.00 | 61.13 |
50.00 | 63.47 |
44.00 | 52.03 |
37.00 | 46.88 |
37.00 | 50.25 |
29.00 | 40.55 |
28.00 | 44.79 |
数据需要先进行排序
二、数据归一化
[p1,ps]=mapminmax(p);
[t1,ts]=mapminmax(t);
三、网络设计和训练
TF1='tansig';TF2='purelin';
net=newff(minmax(p1),[7,1],{TF1 TF2},'trainlm');%网络创建
%网络参数的设置
net.trainParam.epochs=10000;%训练次数设置
net.trainParam.goal=1e-3;%训练目标设置
net.trainParam.lr=0.1;%学习率设置
net.trainParam.show=25;%显示的间隔次数
% 指定训练参数
[net,tr]=train(net,p1,t1);
四、网络仿真
[normtrainoutput,trainPerf]=sim(net,p1,[],[],t1);%训练的数据
五、反归一化
%将所得的结果进行反归一化
trainoutput=mapminmax('reverse',normtrainoutput,ts);
%数据反归一化
trainvalue=mapminmax('reverse',t1,ts);%正常的验证数据
六、画图
plot(p,t)
hold on
plot(p,trainoutput)
title('数据拟合');
xlabel('年龄');
ylabel('重量')
七、结果和总结
第一次学习这个,在实验过程中,发现使用预测数据不能很好拟合,而使用实验数据可以获得较好的表现,但此问题仍未获得好的解答,希望指正一下。