一、导入数据
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('重量')
七、结果和总结
第一次学习这个,在实验过程中,发现使用预测数据不能很好拟合,而使用实验数据可以获得较好的表现,但此问题仍未获得好的解答,希望指正一下。


本文介绍了如何使用Matlab进行神经网络训练的过程,包括数据导入、归一化、网络设计与训练、仿真、反归一化及结果可视化等步骤,并讨论了训练数据与预测数据的表现差异。
1611

被折叠的 条评论
为什么被折叠?



