日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于BP神经网络的人口预测

發布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于BP神经网络的人口预测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、人工神經網絡

1.1 人工神經元

人工神經元是對生物神經元的模擬,這種信號傳輸由輸入信號x、突觸權重ω、內部閾值θ_j和輸出信號y來模擬,如圖:

可見,簡單神經元的數學表達式為:y=f(∑i=1nwi.xi?θi)y=f(\sum_{i=1}^nw_i.x_i-\theta_i)y=f(i=1n?wi?.xi??θi?)
1.2 BP人工神經網絡(Back Propagation)
BP人工神經網絡由輸入層、隱含層、輸出層三層組成,核心是通過一邊向后傳遞誤差,一邊修正誤差,以此來不斷調整網絡參數,以實現或逼近所希望輸入、輸出量之間的映射關系。

二、搭建BP神經網絡

2.1 利用MATLAB搭建BP人工神經網絡的步驟:

  • 讀取數據,并作歸一化處理;
  • 劃分訓練集和測試集;
  • 構建BP神經網絡;
  • 網絡參數配置;
  • BP神經網絡訓練;
  • 仿真計算;
  • 計算與測試集之間的誤差
  • 2.2 BP人工神經網絡人口模型預測

  • 選取1961-2010年人口數據作為訓練集,2011-2015年人口數據作為測試集,搭建BP神經網絡,并以此預測2016-2020年的人口數據。
  • 隱含層神經元的個數:10,通過經驗公式確定: (a+b)\sqrt(a+b)(?a+b),n為輸入層層數,m為輸出層層數,a∈[0,10] 隱含層
  • 神經元的傳輸函數:tansig (正切S型傳遞函數)
  • 輸出層的傳輸函數:purelin(線性傳遞函數)
  • 反向傳播的訓練函數:trainlm(Levenberg-Marquardt算法,即非線性最小二乘法)
  • 因為BP神經網絡訓練過程中,是根據每個節點的計算誤差不斷修正調整連接層的權值ω、閾值θ_j,所以每次計算結果會有偏差。選取擬合結果比較好的兩次如下:

    三、數據比較

    將BP人工神經算法與改進后的Logistics算法的擬合效果進行對比,擬合誤差以均方根誤差為比較標準。
    模型 2011-2015的擬合誤差 2016-2020的預測誤差

    改進的Logistics算法306.7126792.9019
    BP神經網絡算法(第1組)106.1849415.5135
    BP神經網絡算法(第2組)277.2575134.0518

    四、MATLAB代碼

    clear all clc clf %% 1,讀取1961-2015的人口數據,并做歸一化處理 input_1=[65859,67296,69172,70499,72538,74542,76368,78534,80671,82992,85229,87177,89211,90859,92420,93717,94974,96259,97542,98705,100072,101654,103008,104357,105851,107507,109300,111026,112704,114333,115823,117171,118517,119850,121121,122389,123626,124761,125786,126743,127627,128453,129227,129988,130756,131448,132129,132802,133450,134091,134916,135922,136726,137646,138326]; n=length(input_1); row=4; %通過前四年數據,預測第五年 input=zeros(4,n-row); for i =1:row input(i,:)=input_1(i:n-row+i-1); end output=input_1(row+1:end); [inputn,inputps]=mapminmax(input); [outputn,outputps]=mapminmax(output); %% 2,劃分訓練集和測試集 inputn_train=inputn(:,1:n-row-5); inputn_test=inputn(:,n-row-4:end); outputn_train=outputn(1:n-row-5); outputn_test=outputn(n-row-4:end); %% 3,構建BP神經網絡 hiddennum=10;%隱含層節點數量經驗公式p=sqrt(m+n)+a ,故分別取3~13進行試驗 net=newff(inputn_train,outputn_train,hiddennum,{'tansig','purelin'},'trainlm'); %tansig :正切S型傳遞函數。purelin:線性傳遞函數。trainlm:Levenberg-Marquardt算法 %% 4,網絡參數配置 net.trainParam.epochs=1000; net.trainParam.lr=0.2; %% 5,BP神經網絡訓練 [net,tr]=train(net,inputn_train,outputn_train); %% 6,仿真計算 resultn=sim(net,inputn_test); %% 7,計算與測試集之間誤差 result=mapminmax('reverse',resultn,outputps); output_test=mapminmax('reverse',outputn_test,outputps); error=result-output_test; rmse=sqrt(error*error')/length(error); figure(1) plot(output_test,'b') hold on plot(result,'r*'); hold on plot(error,'s','MarkerFaceColor','k') legend('期望值','預測值','誤差') xlabel('數據組數') ylabel('值') %% 8,預測未來五年2016-2020的人口數據 pn=5; [p_in,ps]=mapminmax(input_1(n-row+1:end)); p_in=p_in'; p_outn=zeros(1,pn); for i = 1:pn p_outn(i)=sim(net,p_in); p_in=[p_in(2:end);p_outn(i)]; end p_out=mapminmax('reverse',p_outn,ps) error2=p_out-[139232,140011,140541,141008,141178]; rmse2=sqrt(error2*error2')/length(error2) figure(2) plot(1961:2020,[input_1,139232,140011,140541,141008,141178],'r*') hold on plot(2011:2015,result,'b') hold on plot(2015:2020,[result(end),p_out],'g')

    總結

    以上是生活随笔為你收集整理的基于BP神经网络的人口预测的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。