BP神經網路預測的步驟:
1、輸入和輸出數據。
2、創建網路。fitnet()
3、劃分訓練,測試和驗證數據的比例。net.divideParam.trainRatio;net.divideParam.valRatio;net.divideParam.testRatio
4、訓練網路。train()
5、根據圖表判斷擬合好壞。ploterrcorr();parcorr();plotresponse()
6、預測往後數據。net()
7、畫出預測圖。plot()
執行下列命令
BP_prediction
得到結果:
[ 2016, 14749.003045557066798210144042969]
[ 2017, 15092.847215188667178153991699219]
[ 2018, 15382.150005970150232315063476562]
[ 2019, 15398.85769711434841156005859375]
[ 2020, 15491.935150090605020523071289062]
❷ matlab bp神經網路
輸入量必須有才能預測,只是輸入量要比原來的往後延長一點,如原來的t=1:5,可改為t1=3:7,這樣,再模擬,就向後預測了2個點。3入1出的類似,要有3個輸入。
❸ matlab BP神經網路人口預測,用32個數據每4個為一組,前三個為輸入,進行滾動預測
你最好用優化演算法優化一下,結果肯定會更好,我做過一些這方面的研究,我給你個簡答的遺傳演算法優化BP網路的列子,你可以套用一下,就出來了,同樣是預測:
神經網路遺傳演算法函數極值尋優
%% 清空環境變數
clc
clear
tic
%% 訓練數據預測數據提取及歸一化
%下載輸入輸出數據
load data1 input output
%從1到2000間隨機排序
k=rand(1,4000);
[m,n]=sort(k);
%找出訓練數據和預測數據
input_train=input(n(1:3900),:)';
output_train=output(n(1:3900),:)';
input_test=input(n(3901:4000),:)';
output_test=output(n(3901:4000),:)';
%選連樣本輸入輸出數據歸一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
%% BP網路訓練
% %初始化網路結構
net=newff(inputn,outputn,5);
net.trainParam.epochs=100;
net.trainParam.lr=0.1;
net.trainParam.goal=0.0000004;
%網路訓練
net=train(net,inputn,outputn);
%% BP網路預測
%預測數據歸一化
inputn_test=mapminmax('apply',input_test,inputps);
%網路預測輸出
an=sim(net,inputn_test);
%網路輸出反歸一化
BPoutput=mapminmax('reverse',an,outputps);
%% 結果分析
figure(1)
plot(BPoutput,':og')
hold on
plot(output_test,'-*');
legend('預測輸出','期望輸出','fontsize',12)
title('BP網路預測輸出','fontsize',12)
xlabel('樣本','fontsize',12)
ylabel('輸出','fontsize',12)
%預測誤差
error=BPoutput-output_test;
figure(2)
plot(error,'-*')
title('神經網路預測誤差')
figure(3)
plot((output_test-BPoutput)./BPoutput,'-*');
title('神經網路預測誤差百分比')
errorsum=sum(abs(error))
❹ BP神經網路matlab源程序代碼講解
newff 創建前向BP網路格式:
net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
其中:PR —— R維輸入元素的R×2階最大最小值矩陣; Si —— 第i層神經元的個數,共N1層; TFi——第i層的轉移函數,默認『tansig』; BTF—— BP網路的訓練函數,默認『trainlm』; BLF—— BP權值/偏差學習函數,默認』learngdm』 PF ——性能函數,默認『mse』;(誤差)
e.g.
P = [0 1 2 3 4 5 6 7 8 9 10];T = [0 1 2 3 4 3 2 1 2 3 4];
net = newff([0 10],[5 1],{'tansig' 'purelin'});net.trainparam.show=50; %每次循環50次net.trainParam.epochs = 500; %最大循環500次
net.trainparam.goal=0.01; %期望目標誤差最小值
net = train(net,P,T); %對網路進行反復訓練
Y = sim(net,P)Figure % 打開另外一個圖形窗口
plot(P,T,P,Y,'o')