广义回归神经网络(GRNN)的数据预测
生活随笔
收集整理的這篇文章主要介紹了
广义回归神经网络(GRNN)的数据预测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
廣義回歸神經網絡是徑向基神經網絡的一種,GRNN具有很強的非線性映射能力和學習速度,比RBF具有更強的優勢,網絡最后普收斂于樣本量集聚較多的優化回歸,樣本數據少時,預測效果很好, ? 網絡還可以處理不穩定數據,
GRNN的網絡結構
代碼例子:
% GRNN的數據預測—基于廣義回歸神經網絡的貨運量預測%% 清空環境變量 clc; clear all close all nntwarn off;%% 載入數據 load data; % 載入數據并將數據分成訓練和預測兩類 p_train=p(1:12,:); t_train=t(1:12,:); p_test=p(13,:); t_test=t(13,:); %% 交叉驗證 desired_spread=[]; mse_max=10e20; desired_input=[]; desired_output=[]; result_perfp=[]; indices = crossvalind('Kfold',length(p_train),4); h=waitbar(0,'正在尋找最優化參數....'); k=1; for i = 1:4perfp=[];disp(['以下為第',num2str(i),'次交叉驗證結果'])test = (indices == i); train = ~test;p_cv_train=p_train(train,:);t_cv_train=t_train(train,:);p_cv_test=p_train(test,:);t_cv_test=t_train(test,:);p_cv_train=p_cv_train';t_cv_train=t_cv_train';p_cv_test= p_cv_test';t_cv_test= t_cv_test';[p_cv_train,minp,maxp,t_cv_train,mint,maxt]=premnmx(p_cv_train,t_cv_train);p_cv_test=tramnmx(p_cv_test,minp,maxp);for spread=0.1:0.1:2;net=newgrnn(p_cv_train,t_cv_train,spread);waitbar(k/80,h);disp(['當前spread值為', num2str(spread)]);test_Out=sim(net,p_cv_test);test_Out=postmnmx(test_Out,mint,maxt);error=t_cv_test-test_Out;disp(['當前網絡的mse為',num2str(mse(error))])perfp=[perfp mse(error)];if mse(error)<mse_maxmse_max=mse(error);desired_spread=spread;desired_input=p_cv_train;desired_output=t_cv_train;endk=k+1;endresult_perfp(i,:)=perfp; end; close(h) disp(['最佳spread值為',num2str(desired_spread)]) disp(['此時最佳輸入值為']) desired_input disp(['此時最佳輸出值為']) desired_output %% 采用最佳方法建立GRNN網絡 net=newgrnn(desired_input,desired_output,desired_spread); p_test=p_test'; p_test=tramnmx(p_test,minp,maxp); grnn_prediction_result=sim(net,p_test); grnn_prediction_result=postmnmx(grnn_prediction_result,mint,maxt); grnn_error=t_test-grnn_prediction_result'; disp(['GRNN神經網絡三項流量預測的誤差為',num2str(abs(grnn_error))]) save best desired_input desired_output p_test t_test grnn_error mint maxt
與BP神經網絡的比較
% GRNN的數據預測—基于廣義回歸神經網絡的貨運量預測%% 以下程序為案例擴展里的GRNN和BP比較 需要load chapter8.1的相關數據 clear all load best n=13 p=desired_input t=desired_output net_bp=newff(minmax(p),[n,3],{'tansig','purelin'},'trainlm'); % 訓練網絡 net.trainParam.show=50; net.trainParam.epochs=2000; net.trainParam.goal=1e-3; %調用TRAINLM算法訓練BP網絡 net_bp=train(net_bp,p,t); bp_prediction_result=sim(net_bp,p_test); bp_prediction_result=postmnmx(bp_prediction_result,mint,maxt); bp_error=t_test-bp_prediction_result'; disp(['BP神經網絡三項流量預測的誤差為',num2str(abs(bp_error))])總結
以上是生活随笔為你收集整理的广义回归神经网络(GRNN)的数据预测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RBF(径向基)神经网络 非线性函数回归
- 下一篇: crossvalind函数 (交叉验证函