%% 该代码为基于BP神经网络的预测算法
%
% <html>
% <table border="0" width="600px" id="table1"> <tr> <td><b><font size="2">该案例作者申明:</font></b></td> </tr> <tr><td><span class="comment"><font size="2">1:本人长期驻扎在此<a target="_blank" href="http://www.ilovematlab.cn/forum-158-1.html"><font color="#0000FF">板块</font></a>里,对该案例提问,做到有问必答。本套书籍官方网站为:<a href="http://video.ourmatlab.com">video.ourmatlab.com</a></font></span></td></tr><tr> <td><font size="2">2:点此<a href="http://union.dangdang.com/transfer/transfer.aspx?from=P-284318&backurl=http://www.dangdang.com/">从当当预定本书</a>:<a href="http://union.dangdang.com/transfer/transfer.aspx?from=P-284318&backurl=http://www.dangdang.com/">《Matlab神经网络30个案例分析》</a>。</td></tr><tr> <td><p class="comment"></font><font size="2">3</font><font size="2">:此案例有配套的教学视频,视频下载方式<a href="http://video.ourmatlab.com/vbuy.html">video.ourmatlab.com/vbuy.html</a></font><font size="2">。 </font></p></td> </tr> <tr> <td><span class="comment"><font size="2"> 4:此案例为原创案例,转载请注明出处(《Matlab神经网络30个案例分析》)。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 5:若此案例碰巧与您的研究有关联,我们欢迎您提意见,要求等,我们考虑后可以加在案例里。</font></span></td> </tr> </table>
% </html>
%% 清空环境变量
% clc
% clear
%
% %% 训练数据预测数据提取及归一化
% %下载输入输出数据
% load data input output
%
% %从1到2000间随机排序
% k=rand(1,2000);
% [m,n]=sort(k);
%
% %找出训练数据和预测数据
% input_train=input(n(1:1900),:)';
% output_train=output(n(1:1900));
% input_test=input(n(1901:2000),:)';
% output_test=output(n(1901:2000));
clc
clear
format compact;
%% 训练数据预测数据提取及归一化
%下载输入输出数据
% load data input output
%
% %从1到2000间随机排序
% k=rand(1,2000);
% [m,n]=sort(k);
%
% %找出训练数据和预测数据
% input_train=input(n(1:1900),:)';
% output_train=output(n(1:1900));
% input_test=input(n(1901:2000),:)';
% output_test=output(n(1901:2000));
Kdata=xlsread('cars-33.xlsx');
data_input=Kdata(:,1:33);%提取前25所有行
data_output=Kdata(:,34);%提取第26所有行
train_input=data_input([1 2 3 5 6 9 10 12 13 15 16 17 18 20 21 22 23 25 27 28 29 30 31 32 34 38 39 40 41 43 45 46 48 49],:);%构建训练样本输入
train_output=data_output([1 2 3 5 6 9 10 12 13 15 16 17 18 20 21 22 23 25 27 28 29 30 31 32 34 38 39 40 41 43 45 46 48 49],:);%构建训练样本输出
test_input=data_input([4 7 8 11 14 19 24 26 33 35 36 37 42 44 47],:);%构建测试样本输入
test_output=data_output([4 7 8 11 14 19 24 26 33 35 36 37 42 44 47],:);%构建测试样本输出
%选连样本输入输出数据归一化
% [inputn,inputps]=mapminmax(input_train);
% [outputn,outputps]=mapminmax(output_train);
[inputn,inputps]=mapminmax(train_input');
% inputn = inputn';
[outputn,outputps]=mapminmax(train_output');
% outputn = outputn';
%训练集
% [inputn,inputps] = mapminmax(train_input');
% inputn = inputn';
% test_inputn = mapminmax('apply',test_input',inputps);
% test_inputn = test_inputn';
% %测试集
% [outputn,outputps] = mapminmax(train_output');
% outputn = outputn';
% test_outputn = mapminmax('apply',test_output',outputps);
% test_outputn = test_outputn';
%% BP网络训练
% %初始化网络结构
net=newff(inputn,outputn,9);%网络创建
net.trainParam.epochs=50;%训练次数设置
net.trainParam.lr=0.01;%学习率设置,应设置为较少值,太大虽然会在开始加快收敛速度,但临近最佳点时,会产生动荡,而致使无法收敛
net.trainParam.goal=0.0004;%训练目标设置
%网络训练
net=train(net,inputn,outputn);
%% BP网络预测
%预测数据归一化
inputn_test=mapminmax('apply',test_input',inputps);
%网络预测输出
an=sim(net,inputn_test);
%网络输出反归一化
% py_train=mapminmax('reverse',an,inputps);
BPoutput=mapminmax('reverse',an,outputps);
%% 结果分析
figure(1)
plot(BPoutput,':og')
hold on
plot(test_output,'-*');
legend('预测输出','期望输出')
title('BP网络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)
%预测误差
error=BPoutput-test_output;
figure(2)
plot(error,'-*')
title('BP网络预测误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)
figure(3)
plot((test_output-BPoutput)./BPoutput,'-*');
title('神经网络预测误差百分比')
errorsum=sum(abs(error));
% figure;
% hold on;
% % scatter(test_output,pyn_test);
% % scatter(train_output,trainpre);
% scatter(test_output,BPoutput);
% scatter(train_output,py_train);
% title('预测数据的拟合效果');
%
% legend('测试集','校正集');
% xlabel('真实值');
% ylabel('预测值');
% web browser www.matlabsky.com
%%
% <html>
% <table width="656" align="left" > <tr><td align="center"><p><font size="2"><a href="http://video.ourmatlab.com/">Matlab神经网络30个案例分析</a></font></p><p align="left"><font size="2">相关论坛:</font></p><p align="left"><font size="2">《Matlab神经网络30个案例分析》官方网站:<a href="http://video.ourmatlab.com">video.ourmatlab.com</a></font></p><p align="left"><font size="2">Matlab技术论坛:<a href="http://www.matlabsky.com">www.matlabsky.com</a></font></p><p align="left"><font size="2">M</font><font size="2">atlab函数百科:<a href="http://www.mfun.la">www.mfun.la</a></font></p><p align="left"><font size="2">Matlab中文论坛:<a href="http://www.ilovematlab.com">www.ilovematlab.com</a></font></p></td> </tr></table>
% </html>