基于蜣螂优化的BP神经网络(分类应用) - 附代码
基于蜣螂優化的BP神經網絡(分類應用) - 附代碼
文章目錄
- 基于蜣螂優化的BP神經網絡(分類應用) - 附代碼
- 1.鳶尾花iris數據介紹
- 2.數據集整理
- 3.蜣螂優化BP神經網絡
- 3.1 BP神經網絡參數設置
- 3.2 蜣螂算法應用
- 4.測試結果:
- 5.Matlab代碼
摘要:本文主要介紹如何用蜣螂算法優化BP神經網絡,利用鳶尾花數據,做一個簡單的講解。
1.鳶尾花iris數據介紹
本案例利用matlab公用的iris鳶尾花數據,作為測試數據,iris數據是特征為4維,類別為3個類別。數據格式如下:
| 單組iris數據 | 5.3 | 2.1 | 1.2 | 1 |
3種類別用1,2,3表示。
2.數據集整理
iris數據總共包含150組數據,將其分為訓練集105組,測試集45組。如下表所示:
| 105 | 45 | 150 |
類別數據處理:原始數據類別用1,2,3表示為了方便神經網絡訓練,類別1,2,3分別用1,0,0;0,1,0;0,0,1表示。
當進行數據訓練對所有輸入特征數據均進行歸一化處理。
3.蜣螂優化BP神經網絡
3.1 BP神經網絡參數設置
通常而言,利用智能算法一般優化BP神經網絡的初始權值和閾值來改善BP神經網絡的性能。本案例基于iris數據,由于iris數據維度不高,采用簡單的BP神經網絡。神經網絡參數如下:
圖1.神經網絡結構神經網絡參數如下:
%創建神經網絡 inputnum = 4; %inputnum 輸入層節點數 4維特征 hiddennum = 10; %hiddennum 隱含層節點數 outputnum = 3; %outputnum 隱含層節點數 net = newff( minmax(input) , [hiddennum outputnum] , { 'logsig' 'purelin' } , 'traingdx' ) ; %設置訓練參數 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/128280084
蜣螂算法的參數設置為:
popsize = 10;%種群數量Max_iteration = 15;%最大迭代次數 lb = -5;%權值閾值下邊界 ub = 5;%權值閾值上邊界 % inputnum * hiddennum + hiddennum*outputnum 為閾值的個數 % hiddennum + outputnum 為權值的個數 dim = inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum ;% inputnum * hiddennum + hiddennum*outputnum維度這里需要注意的是,神經網絡的閾值數量計算方式如下:
本網絡有2層:
第一層的閾值數量為:4*10 = 40; 即inputnum * hiddennum;
第一層的權值數量為:10;即hiddennum;
第二層的閾值數量為:3*10 = 30;即hiddenum * outputnum;
第二層權值數量為:3;即outputnum;
于是可知我們優化的維度為:inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum = 83;
適應度函數值設定:
本文設置適應度函數如下:
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分別為訓練集和測試集的錯誤分類率。適應度函數表明我們最終想得到的網絡是在測試集和訓練集上均可以得到較好結果的網絡。
4.測試結果:
從蜣螂算法的收斂曲線可以看到,整體誤差是不斷下降的,說明蜣螂算法起到了優化的作用:
圖2 蜣螂算法收斂曲線測試統計如下表所示
| BP神經網絡 | 100% | 95% |
| 蜣螂-BP | 100% | 98% |
5.Matlab代碼
總結
以上是生活随笔為你收集整理的基于蜣螂优化的BP神经网络(分类应用) - 附代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [技术讨论] 交流MOSFET的损耗估算
- 下一篇: setbkcolor