學校響應式網(wǎng)站模板網(wǎng)絡推廣有哪些途徑
基于斑馬優(yōu)化的BP神經(jīng)網(wǎng)絡(分類應用) - 附代碼
文章目錄
- 基于斑馬優(yōu)化的BP神經(jīng)網(wǎng)絡(分類應用) - 附代碼
- 1.鳶尾花iris數(shù)據(jù)介紹
- 2.數(shù)據(jù)集整理
- 3.斑馬優(yōu)化BP神經(jīng)網(wǎng)絡
- 3.1 BP神經(jīng)網(wǎng)絡參數(shù)設置
- 3.2 斑馬算法應用
- 4.測試結果:
- 5.Matlab代碼
摘要:本文主要介紹如何用斑馬算法優(yōu)化BP神經(jīng)網(wǎng)絡,利用鳶尾花數(shù)據(jù),做一個簡單的講解。
1.鳶尾花iris數(shù)據(jù)介紹
本案例利用matlab公用的iris鳶尾花數(shù)據(jù),作為測試數(shù)據(jù),iris數(shù)據(jù)是特征為4維,類別為3個類別。數(shù)據(jù)格式如下:
特征1 | 特征2 | 特征3 | 類別 | |
---|---|---|---|---|
單組iris數(shù)據(jù) | 5.3 | 2.1 | 1.2 | 1 |
3種類別用1,2,3表示。
2.數(shù)據(jù)集整理
iris數(shù)據(jù)總共包含150組數(shù)據(jù),將其分為訓練集105組,測試集45組。如下表所示:
訓練集(組) | 測試集(組) | 總數(shù)據(jù)(組) |
---|---|---|
105 | 45 | 150 |
類別數(shù)據(jù)處理:原始數(shù)據(jù)類別用1,2,3表示為了方便神經(jīng)網(wǎng)絡訓練,類別1,2,3分別用1,0,0;0,1,0;0,0,1表示。
當進行數(shù)據(jù)訓練對所有輸入特征數(shù)據(jù)均進行歸一化處理。
3.斑馬優(yōu)化BP神經(jīng)網(wǎng)絡
3.1 BP神經(jīng)網(wǎng)絡參數(shù)設置
通常而言,利用智能算法一般優(yōu)化BP神經(jīng)網(wǎng)絡的初始權值和閾值來改善BP神經(jīng)網(wǎng)絡的性能。本案例基于iris數(shù)據(jù),由于iris數(shù)據(jù)維度不高,采用簡單的BP神經(jīng)網(wǎng)絡。神經(jīng)網(wǎng)絡參數(shù)如下:
神經(jīng)網(wǎng)絡參數(shù)如下:
%創(chuàng)建神經(jīng)網(wǎng)絡
inputnum = 4; %inputnum 輸入層節(jié)點數(shù) 4維特征
hiddennum = 10; %hiddennum 隱含層節(jié)點數(shù)
outputnum = 3; %outputnum 隱含層節(jié)點數(shù)
net = newff( minmax(input) , [hiddennum outputnum] , { 'logsig' 'purelin' } , 'traingdx' ) ;
%設置訓練參數(shù)
net.trainparam.show = 50 ;
net.trainparam.epochs = 200 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;
3.2 斑馬算法應用
斑馬算法原理請參考:https://blog.csdn.net/u011835903/article/details/130565746
斑馬算法的參數(shù)設置為:
popsize = 10;%種群數(shù)量Max_iteration = 15;%最大迭代次數(shù)
lb = -5;%權值閾值下邊界
ub = 5;%權值閾值上邊界
% inputnum * hiddennum + hiddennum*outputnum 為閾值的個數(shù)
% hiddennum + outputnum 為權值的個數(shù)
dim = inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum ;% inputnum * hiddennum + hiddennum*outputnum維度
這里需要注意的是,神經(jīng)網(wǎng)絡的閾值數(shù)量計算方式如下:
本網(wǎng)絡有2層:
第一層的閾值數(shù)量為:4*10 = 40; 即inputnum * hiddennum;
第一層的權值數(shù)量為:10;即hiddennum;
第二層的閾值數(shù)量為:3*10 = 30;即hiddenum * outputnum;
第二層權值數(shù)量為:3;即outputnum;
于是可知我們優(yōu)化的維度為:inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum = 83;
適應度函數(shù)值設定:
本文設置適應度函數(shù)如下:
f i t n e s s = a r g m i n ( T r a i n D a t a E r r o r R a t e + T e s t D a t a E r r o r R a t e ) fitness = argmin(TrainDataErrorRate + TestDataErrorRate) fitness=argmin(TrainDataErrorRate+TestDataErrorRate)
其中TrainDataErrorRate,TestDataErrorRate分別為訓練集和測試集的錯誤分類率。適應度函數(shù)表明我們最終想得到的網(wǎng)絡是在測試集和訓練集上均可以得到較好結果的網(wǎng)絡。
4.測試結果:
從斑馬算法的收斂曲線可以看到,整體誤差是不斷下降的,說明斑馬算法起到了優(yōu)化的作用: