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