因为要写论文做实验,所以自己研究了一些关于神经网络的算法,用matlab做的一些小测试,使用的是《matlab神经网络43个案例分析》这本书,感觉还不错,分享一下。
使用每行的前4个数据预测第5个数据的值。
资源地址 http://download.youkuaiyun.com/detail/u012749168/9640849
<span style="font-family: Arial, Helvetica, sans-serif;">%读取数据,读取之前必须先加入到matlab中去</span>
xlsfile='ceshi.xlsx'
%组织训练数据的输入和输出,输入时2880个4维数据,输出是2880个1维数据
[input1]=xlsread(xlsfile,1,'B1:E2880');
[output1]=xlsread(xlsfile,1,'A1:A2880');
%测试数据的输入时95个4维输入和95个1维输出
[input2]=xlsread(xlsfile,1,'B2881:E2976');
[output2]=xlsread(xlsfile,1,'A2881:A2976');
%训练数据的归一化,输入的数据样本是一行是一个,归一化的时候是所有样本中同维度点的数据归一化,matlab归一化行,因此要转置一下inputs是归一化后的记录参数,为
%了保持一致性,我们后面还要对测试样本进行同条件的归一化以及反归一化的复原操作
[inputn,inputps]=mapminmax(input1');
[outputn,outputps]=mapminmax(output1');
%创建BP神经网络,把优化的参数都给列出来了
net=newff(inputn,outputn,8);%8个隐含层
net.trainParam.epochs=1000;%迭代次数为100次
net.trainParam.lr=0.1;%学习速率为0.1
net.trainParam.goal=0.001%目标误差
%训练神经网络
net=train(net,inputn,outputn);
%测试输入数据归一化
inputn_test=mapminmax('apply',input2',inputps);
%仿真
an=sim(net,inputn_test);
%对仿真输出值进行反归一化操作
BPoutput=mapminmax('reverse',an,outputps);
%画出实际输出和预测输出的图像,画在同一个框中
figure(1)
plot(BPoutput,':og')
hold on
plot(output2,'-*');
%算一下误差率
error=BPoutput-output2'
mean(abs((error)./BPoutput))
有什么问题大家可以留言一起讨论