BP神經網路與MATLAB實現案例二
阿新 • • 發佈:2019-01-10
**
歡迎來的菜市場!!!
**
你現在手裡有一袋子雞腿(j),一袋子葡萄(t),要去換人家的西瓜(h)
假設雞腿20元/斤,葡萄17元/斤,西瓜2元/斤
也就是h=(20j+17t)/2
當然我們要通過機器去實現它
給出一組資料
讓我們對她進行一系列的程式碼化
[input,ps1]=mapminmax([j;t]);
[target,ps2]=mapminmax(hh);
net=newff(input,target,6,{'tansig','purelin'},'trainlm');
net.trainParam.epochs=10000;
net.trainParam.goal=0.01 ;
net.trainParam.lr=0.001;
net=train(net,input,target);
jj=[3 2 4 1 2 5 4 3]; %雞腿
tt=[5 4 1 2 3 2 3 1];%葡萄
hhh=(20*j+17*t)/3;%西瓜
input1=mapminmax('apply',[jj;tt],ps1);%應用之前的種子歸一化
%預測
yuce=net(input1);
bagezhi=mapminmax('reverse',yuce,ps2);
set(0,'defaultfigurecolor','w')
figure
plot(hhh,'*','color' ,[222 87 18]/255);hold on
plot(bagezhi,'-o','color',[244 208 0]/255,...
'linewidth',2,'MarkerSize',14,'MarkerEdgecolor',[138 151 123]/255);
legend('act','yuce')
xlabel('大西瓜大西瓜大西瓜'),ylabel('斤')
set(gca, 'Box', 'off', 'TickDir', 'out', 'TickLength', [.02 .02], ...
'XMinorTick', 'on', 'YMinorTick', 'on', 'YGrid' , 'on', ...
'XColor', [.3 .3 .3], 'YColor', [.3 .3 .3],'LineWidth', 1)
結果如下
3步就到達了期望誤差
下面給出圈圈中的預測值的資料和準確值
1.預測資料
2.準確值
一眼便知,誤差很小,訓練理想,預測較準確
再來看看Validation和test
擬合的較為合理,且兩個圖的點沒有出現較少的情況,能說明問題
好了,麻麻再也不用擔心我該換回幾斤的西瓜了!