MATLAB中BP神经网络用于回归拟合算法实现(另附GRNN代码)
BP神經網絡:是1986年由Rumelhart和McClelland為首的科學家提出的概念,是一種按照誤差逆向傳播算法訓練的多層前饋神經網絡,是目前應用最廣泛的神經網絡。神經網絡是把生活中的常見情節推廣到計算仿真的范疇,這樣的啟發式算法還有許多,例如:遺傳算法、煙花算法、蟻群算法、模擬退火算法等等。
一、神經網絡算法步驟
1、導入需要處理的數據,隨機獲取實驗數據和目標數據。
2、構建訓練網絡,函數:newwff。
3、對網絡訓練,函數:train。
4、仿真操作,函數:sin(net,x)。
5、評價。
6、模擬訓練的效果可視化。
在神經網絡訓練中,我們構建神經網絡的實驗數據和目標收斂數據都是從原始數據中隨機獲取的。
二、神經網絡學習主要函數說明
newff:前饋網絡創建函數
函數結構:net = newff(A,B,{C},’trainFun’,’BLF’,’PF’)。
參數:
A:一個n*2的矩陣,第i行元素為輸入信號Xi的最大最小值;
B:一個K維行向量,其元素為網絡中各個節點的數量;
C:一個K維字符串行向量,每一個分量為對應層的神經元的激活函數,默認為“tansig”;
trainFun:為學習規則的采用的訓練算法。默認為:“trainlm”;
BLF:BP權值/偏差學習函數。默認為:“learngdm”;
PF:性能函數,默認為“mse”;
train函數
函數結構
網絡學習函數:[net,tr,YI,E] = train(net,X,Y) 。
參數:
X:網絡實際輸入;
Y:網絡應有輸出;
tr:網絡跟蹤信息;
YI:網絡實際輸出;
E:誤差矩陣。
sim函數
函數結構:Y = sim(net,X) 。
參數
X:輸入給網絡的KN矩陣,K為網絡輸入個數,N為樣本數據量;
Y:輸出矩陣QN,其中Q為網絡輸出個數。
三、案例
1.案例1
利用三層BP神經網絡來完成非線性函數的逼近任務,其中隱層神經元個數為五個。
clear; clc;X=-1:0.1:1;D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988...0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201];net=newff([-1,1],[5,1],{'tansig','tansig'});%初始網絡net.trainParam.epochs=1000;%最大訓練次數net.trainParam.goal=0.005;%訓練要求精度net=train(net,X,D);%網絡訓練figureplot(X,D,'*',X,Y); %繪制實際曲線點和預測曲線% 利用得到的神經網絡和數據仿真預測Y=sim(net,X) %Y為預測結果2.案例2
clear;clc;P=[-1 -1 2 2 4;0 5 0 5 7];T=[-1 -1 1 1 -1];% 樣本數據歸一化處理[input_n,input_ps]=mapminmax(P);[output_n,output_ps]=mapminmax(T);% 初始化網絡結果(利用minmax函數求輸入樣本范圍)net=newff(input_n,output_n,[5,1]);%三個數據為輸入樣本數據,輸出樣本數據和隱含層節點數%設置參數net.trainParam.show=50;net.trainParam.lr=0.05;net.trainParam.epochs=300;net.trainParam.goal=0.005;%網絡訓練[net,tr]=train(net,P,T);%利用得到的神經網絡和數據仿真預測Y=sim(net,P)%Y為預測結果
以上是BP神經網絡的相關介紹,BP神經網絡適用于大樣本數據的預測,至于小樣本還有灰色理論、最小二乘支持向量機、廣義回歸神經網絡、灰色神經網絡,不同的數據需要根據其自身特點選擇不同的預測方法。在很多次實驗之后,我比較鐘情于BP神經網絡和組合預測,組合預測是大趨勢,客觀上有道理,主觀上有更大的操作可能性。
下面給出廣義回歸神經網絡(包含交叉驗證過程的GRNN)用于小樣本量預測的代碼,包括BP神經網絡預測結果的對比。
GRNN預測,BP對比
總結
以上是生活随笔為你收集整理的MATLAB中BP神经网络用于回归拟合算法实现(另附GRNN代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue从入门到精通之进阶篇(四)模块化工
- 下一篇: 大一计算机引论知识点,计算机引论知识点2