網(wǎng)站做數(shù)據(jù)監(jiān)測寧波網(wǎng)站推廣排名
時序預測 | Matlab實現(xiàn)SOM-BP自組織映射結(jié)合BP神經(jīng)網(wǎng)絡時間序列預測
目錄
- 時序預測 | Matlab實現(xiàn)SOM-BP自組織映射結(jié)合BP神經(jīng)網(wǎng)絡時間序列預測
- 預測效果
- 基本介紹
- 程序設計
- 參考資料
預測效果
基本介紹
1.Matlab實現(xiàn)SOM-BP自組織映射結(jié)合BP神經(jīng)網(wǎng)絡時間序列預測(完整源碼和數(shù)據(jù));
2.數(shù)據(jù)集為excel,單列時間序列數(shù)據(jù)集,運行主程序main.m即可,其余為函數(shù)文件,無需運行;
3.優(yōu)化參數(shù)為神經(jīng)網(wǎng)絡的權值和偏置,命令窗口輸出RMSE、MAPE、MAE、R2等評價指標;
4.運行環(huán)境Matlab2018b及以上;
5.代碼特點:參數(shù)化編程、參數(shù)可方便更改、代碼編程思路清晰、注釋明細。
程序設計
- 完整源碼和數(shù)據(jù)獲取方式私信回復Matlab實現(xiàn)SOM-BP自組織映射結(jié)合BP神經(jīng)網(wǎng)絡時間序列預測。
%% 清空環(huán)境變量
warning off % 關閉報警信息
close all % 關閉開啟的圖窗
clear % 清空變量
clc % 清空命令行%% 導入數(shù)據(jù)(時間序列的單列數(shù)據(jù))
result = xlsread('data.xlsx');%% 數(shù)據(jù)分析
num_samples = length(result); % 樣本個數(shù)
kim = 4; % 延時步長(kim個歷史數(shù)據(jù)作為自變量)
zim = 1; % 跨zim個時間點進行預測%% 劃分數(shù)據(jù)集
for i = 1: num_samples - kim - zim + 1res(i, :) = [reshape(result(i: i + kim - 1), 1, kim), result(i + kim + zim - 1)];
end%% 數(shù)據(jù)集分析
outdim = 1; % 最后一列為輸出
num_size = 0.7; % 訓練集占數(shù)據(jù)集比例
num_train_s = round(num_size * num_samples); % 訓練集樣本個數(shù)
f_ = size(res, 2) - outdim; % 輸入特征維度%% 劃分訓練集和測試集
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
N = size(P_test, 2);%% 數(shù)據(jù)歸一化
[p_train, ps_input] = mapminmax(P_train,0,1);
p_test = mapminmax('apply',P_test,ps_input);[t_train, ps_output] = mapminmax(T_train,0,1);
t_test = mapminmax('apply',T_test,ps_output);%% 節(jié)點個數(shù)
inputnum = size(p_train, 1); % 輸入層節(jié)點數(shù)
hiddennum = 15; % 隱藏層節(jié)點數(shù)
outputnum = size(t_train, 1); % 輸出層節(jié)點數(shù)
% CSDN 機器學習之心
參考資料
[1] https://blog.csdn.net/kjm13182345320/article/details/128577926?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128573597?spm=1001.2014.3001.5501