目錄
一、程序及算法內容介紹:
基本內容:
亮點與優勢:
?二、實際運行效果:
三、部分代碼
四、本文代碼+數據+說明手冊分享:
一、程序及算法內容介紹:
基本內容:
-
本代碼基于Matalb平臺編譯,將GA(遺傳算法)與BP神經網絡結合,進行數據回歸預測
-
輸入訓練的數據包含8個特征,1個響應值,即通過8個輸入值預測1個輸出值(多變量時序回歸預測)
-
歸一化訓練數據,提升網絡泛化性
-
通過GA算法優化BP神經網絡的初始權重、初始偏差等參數,記錄下最優的網絡參數
-
訓練BP網絡進行時序回歸預測,將優化前后的網絡預測效果進行對比,突出優化的重要性
-
迭代計算過程中,自動顯示優化進度條,實時查看程序運行進展情況
-
自動輸出多種多樣的的誤差評價指標,自動輸出大量實驗效果圖片
亮點與優勢:
-
注釋詳細,幾乎每一關鍵行都有注釋說明,適合小白起步學習
-
直接運行Main函數即可看到所有結果,使用便捷
-
編程習慣良好,程序主體標準化,邏輯清晰,方便閱讀代碼
-
所有數據均采用Excel格式輸入,替換數據方便,適合懶人選手
-
出圖詳細、豐富、美觀,可直觀查看運行效果
-
附帶詳細的說明文檔(下圖),其內容包括:算法原理+使用方法說明
?二、實際運行效果:
三、部分代碼
clc;
clear;
warning off;
%% 導入數據
Data = table2array(readtable("數據集.xlsx"));
% 本例數據集中包含:
% 1. 總共472個樣本(每一行表示一個樣本)
% 2. 每個樣本8個特征值(即前8列每一列表示樣本的一個特征,即輸入的變量)
% 3. 每個樣本1個響應值(第9列為表示樣本的響應值,即被預測的變量)%% 劃分訓練集和測試集
InPut_num = 1:1:8; % 輸入特征個數,數據表格中前8列為輸入值,因此設置為1:1:8,若前5個為輸入則設置為1:1:5
OutPut_num = 9; % 輸出響應個數,本例僅一個響應值,為數據表格中第9個,若多個響應值參照上行數據格式設置為x:1:y% 選取前376個樣本作為訓練集,后96個樣本作為測試集,即(1:376),和(377:end)
Train_InPut = Data(1:376,InPut_num); % 訓練輸入
Train_OutPut = Data(1:376,OutPut_num); % 訓練輸出
Test_InPut = Data(377:end,InPut_num); % 測試輸入
Test_OutPut = Data(377:end,OutPut_num); % 測試輸出%% 數據歸一化
% 將數據歸一化到0-1之間
Temp = [Train_OutPut;Test_OutPut];
[~, Ps] = mapminmax(Temp',0,1);
% 歸一化訓練輸入值
Sc = size(Train_InPut);
Temp = reshape(Train_InPut,[1,Sc(1)*Sc(2)]);
Temp = mapminmax('apply',Temp,Ps);
Train_InPut = reshape(Temp,[Sc(1),Sc(2)])';
% 歸一化測試輸入值
Sc = size(Test_InPut);
Temp = reshape(Test_InPut,[1,Sc(1)*Sc(2)]);
Temp = mapminmax('apply',Temp,Ps);
Test_InPut = reshape(Temp,[Sc(1),Sc(2)])';
% 歸一化訓練輸出值
Train_OutPut = mapminmax('apply',Train_OutPut',Ps);
% 歸一化測試輸出值
Test_OutPut = mapminmax('apply',Test_OutPut',Ps);