国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MATLAB第2期】源碼分享#基于LSTM時間序列單步預測,含驗證和預測未來

這篇具有很好參考價值的文章主要介紹了【MATLAB第2期】源碼分享#基于LSTM時間序列單步預測,含驗證和預測未來。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【MATLAB第2期】源碼分享#基于LSTM時間序列單步預測,含驗證和預測未來

1.運行環(huán)境

matlab2020a + cpu

2.數(shù)據(jù)說明

單列數(shù)據(jù),2018/10~2018/12 共三個月,92個數(shù)據(jù)。
?【MATLAB第2期】源碼分享#基于LSTM時間序列單步預測,含驗證和預測未來

3.數(shù)據(jù)處理

樣本標準化處理,其中,前85個數(shù)據(jù)作為訓練樣本,來驗證后7個數(shù)據(jù)效果。最后預測未來7個數(shù)據(jù)。
numTimeStepsTrain = floor(85);%85數(shù)據(jù)訓練 ,7個用來驗證
dataTrain = data(1:numTimeStepsTrain+1,:);% 訓練樣本
dataTest = data(numTimeStepsTrain:end,:); %驗證樣本

4.LSTM參數(shù)設(shè)置

numHiddenUnits = 500;%隱含層神經(jīng)元節(jié)點數(shù)
dropoutLayer(0.2)%丟棄層概率

5.運行過程

?【MATLAB第2期】源碼分享#基于LSTM時間序列單步預測,含驗證和預測未來

根據(jù)訓練效果RMSE誤差圖以及損失圖,可在運行時降低訓練次數(shù),如設(shè)置為300,加快收斂。

6.運行結(jié)果

訓練結(jié)果:
?【MATLAB第2期】源碼分享#基于LSTM時間序列單步預測,含驗證和預測未來

驗證結(jié)果:
?【MATLAB第2期】源碼分享#基于LSTM時間序列單步預測,含驗證和預測未來

評價指標:
訓練集數(shù)據(jù)的MAE為:2524.5837
驗證集數(shù)據(jù)的MAE為:3277.468
訓練集數(shù)據(jù)的MAPE為:0.3253
驗證集數(shù)據(jù)的MAPE為:0.31752
訓練集數(shù)據(jù)的RMSE為:3380.5039
驗證集數(shù)據(jù)的RMSE為:3862.0957
原數(shù)據(jù)量級比較大,加上參數(shù)還需要打磨,所以誤差顯得比較大 ??梢蕴子米约簲?shù)據(jù)試試。

7.預測未來

【MATLAB第2期】源碼分享#基于LSTM時間序列單步預測,含驗證和預測未來

8.代碼展示:

%% 1.環(huán)境清理
clear, clc, close all;
%% 2.導入數(shù)據(jù)
data=xlsread('data.csv');
data1=data;
% 原始數(shù)據(jù)繪圖
figure
plot(data,'-s','Color',[0 0 255]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[0 0 255]./255)
legend('原始數(shù)據(jù)','Location','NorthWest','FontName','華文宋體');
xlabel('樣本','fontsize',12,'FontName','華文宋體');
ylabel('數(shù)值','fontsize',12,'FontName','華文宋體');
%% 3.數(shù)據(jù)處理
numTimeStepsTrain = floor(85);%85數(shù)據(jù)訓練 ,7個用來驗證
[XTrain,YTrain,XTest,YTest,mu,sig] = shujuchuli(data,numTimeStepsTrain);
%% 4.定義LSTM結(jié)構(gòu)參數(shù)
numFeatures= 1;%輸入節(jié)點
numResponses = 1;%輸出節(jié)點
numHiddenUnits = 500;%隱含層神經(jīng)元節(jié)點數(shù) 

%構(gòu)建 LSTM網(wǎng)絡(luò) 
layers = [sequenceInputLayer(numFeatures) 
 lstmLayer(numHiddenUnits) %lstm函數(shù) 
dropoutLayer(0.2)%丟棄層概率 
 reluLayer('name','relu')% 激勵函數(shù) RELU 
fullyConnectedLayer(numResponses)
regressionLayer];

XTrain=XTrain';
YTrain=YTrain';

%% 5.定義LSTM函數(shù)參數(shù) 
def_options();
%% 6.訓練LSTM網(wǎng)絡(luò) 
net = trainNetwork(XTrain,YTrain,layers,options);

%% 7.建立訓練模型 
net = predictAndUpdateState(net,XTrain);

%% 8.仿真預測(訓練集) 
M = numel(XTrain);
for i = 1:M
    [net,YPred_1(:,i)] = predictAndUpdateState(net,XTrain(:,i),'ExecutionEnvironment','cpu');%
end
T_sim1 = sig*YPred_1 + mu;%預測結(jié)果去標準化 ,恢復原來的數(shù)量級 
%% 9.仿真預測(驗證集) 
N = numel(XTest);
for i = 1:N
    [net,YPred_2(:,i)] = predictAndUpdateState(net,XTest(:,i),'ExecutionEnvironment','cpu');%
end
T_sim2 = sig*YPred_2 + mu;%預測結(jié)果去標準化 ,恢復原來的數(shù)量級 
%% 10.評價指標
%  均方根誤差
T_train=data1(1:M)';
T_test=data1(M+1:end)';
error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);
%  MAE
mae1 = sum(abs(T_sim1 - T_train)) ./ M ;
mae2 = sum(abs(T_sim2 - T_test )) ./ N ;
disp(['訓練集數(shù)據(jù)的MAE為:', num2str(mae1)])
disp(['驗證集數(shù)據(jù)的MAE為:', num2str(mae2)])
%  MAPE
maep1 = sum(abs(T_sim1 - T_train)./T_train) ./ M ;
maep2 = sum(abs(T_sim2 - T_test )./T_test) ./ N ;
disp(['訓練集數(shù)據(jù)的MAPE為:', num2str(maep1)])
disp(['驗證集數(shù)據(jù)的MAPE為:', num2str(maep2)])
%  RMSE
RMSE1 = sqrt(sumsqr(T_sim1 - T_train)/M);
RMSE2 = sqrt(sumsqr(T_sim2 - T_test)/N);
disp(['訓練集數(shù)據(jù)的RMSE為:', num2str(RMSE1)])
disp(['驗證集數(shù)據(jù)的RMSE為:', num2str(RMSE2)])
%% 11. 繪圖
figure
subplot(2,1,1)
plot(T_sim1,'-s','Color',[255 0 0]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[250 0 0]./255)
hold on 
plot(T_train,'-o','Color',[150 150 150]./255,'linewidth',0.8,'Markersize',4,'MarkerFaceColor',[150 150 150]./255)
legend( 'LSTM擬合訓練數(shù)據(jù)','實際分析數(shù)據(jù)','Location','NorthWest','FontName','華文宋體');
title('LSTM模型預測結(jié)果及真實值','fontsize',12,'FontName','華文宋體')
xlabel('樣本','fontsize',12,'FontName','華文宋體');
ylabel('數(shù)值','fontsize',12,'FontName','華文宋體');
xlim([1 M])
%-------------------------------------------------------------------------------------
subplot(2,1,2)
bar((T_sim1 - T_train)./T_train)   
legend('LSTM模型訓練集相對誤差','Location','NorthEast','FontName','華文宋體')
title('LSTM模型訓練集相對誤差','fontsize',12,'FontName','華文宋體')
ylabel('誤差','fontsize',12,'FontName','華文宋體')
xlabel('樣本','fontsize',12,'FontName','華文宋體')
xlim([1 M]);
%-------------------------------------------------------------------------------------
figure
subplot(2,1,1)
plot(T_sim2,'-s','Color',[0 0 255]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[0 0 255]./255)
hold on 
plot(T_test,'-o','Color',[0 0 0]./255,'linewidth',0.8,'Markersize',4,'MarkerFaceColor',[0 0 0]./255)
legend('LSTM預測測試數(shù)據(jù)','實際分析數(shù)據(jù)','Location','NorthWest','FontName','華文宋體');
title('LSTM模型預測結(jié)果及真實值','fontsize',12,'FontName','華文宋體')
xlabel('樣本','fontsize',12,'FontName','華文宋體');
ylabel('數(shù)值','fontsize',12,'FontName','華文宋體');
xlim([1 N])
%-------------------------------------------------------------------------------------
subplot(2,1,2)
bar((T_sim2 - T_test )./T_test)   
legend('LSTM模型測試集相對誤差','Location','NorthEast','FontName','華文宋體')
title('LSTM模型測試集相對誤差','fontsize',12,'FontName','華文宋體')
ylabel('誤差','fontsize',12,'FontName','華文宋體')
xlabel('樣本','fontsize',12,'FontName','華文宋體')
xlim([1 N]);

%% 12.預測未來
P = 7;% 預測未來數(shù)量
YPred_3 = [];%預測結(jié)果清零 
[T_sim3] = yuceweilai(net,XTrain,data,P,YPred_3,sig,mu)

%%  13.繪圖
figure
plot(1:size(data,1),data,'-s','Color',[255 0 0]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[250 0 0]./255)
hold on 
plot(size(data,1)+1:size(data,1)+P,T_sim3,'-o','Color',[150 150 150]./255,'linewidth',0.8,'Markersize',4,'MarkerFaceColor',[150 150 150]./255)
legend( 'LSTM預測結(jié)果','Location','NorthWest','FontName','華文宋體');
title('LSTM模型預測結(jié)果','fontsize',12,'FontName','華文宋體')
xlabel('樣本','fontsize',12,'FontName','華文宋體');
ylabel('數(shù)值','fontsize',12,'FontName','華文宋體');

9.代碼獲?。?/h3>

調(diào)用函數(shù)以及案例數(shù)據(jù)可后臺私信回復第2期”獲取下載鏈接了,免費下載即可。
內(nèi)容整理不易,求個關(guān)注,后續(xù)會持續(xù)分享機器學習相關(guān)的源代碼。文章來源地址http://www.zghlxwxcb.cn/news/detail-448658.html

到了這里,關(guān)于【MATLAB第2期】源碼分享#基于LSTM時間序列單步預測,含驗證和預測未來的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包