LSTM长短期记忆网络对车辆尾气排放进行预测

1、内容简介


485-可以交流、咨询、答疑

2、内容说明

3、仿真分析

clc
close all
clear
data = xlsread('新建 Microsoft Excel 工作表 (2).xlsx');

[row,cln] = size(data);
%序列的前 90% 用于训练,后 10% 用于测试
numTimeStepsTrain = floor(0.9*row);
dataTrain = data(1:numTimeStepsTrain+1,:);
dataTest = data(numTimeStepsTrain+1:end,:);
%输入LSTM的时间序列交替一个时间步

mu = mean(dataTrain);
sig = std(dataTrain);
dataTrainStandardized = (dataTrain - mu) ./ sig;

XTrain = dataTrainStandardized(1:end-1,:);
YTrain = dataTrainStandardized(2:end,:);

numFeatures = cln;
numResponses = cln;
numHiddenUnits = 200;
layers = [ ...
    sequenceInputLayer(numFeatures)
    lstmLayer(numHiddenUnits)
    fullyConnectedLayer(numResponses)
    regressionLayer];

options = trainingOptions('adam', ...
    'MaxEpochs',250, ...
    'GradientThreshold',1, ...
    'InitialLearnRate',0.005, ...
    'LearnRateSchedule','piecewise', ...
    'LearnRateDropPeriod',125, ...
    'LearnRateDropFactor',0.2, ...
    'Verbose',0, ...
    'Plots','training-progress');

net = trainNetwork(XTrain',YTrain',layers,options);

dataTestStandardized = (dataTest - mu) ./ sig;
XTest = dataTestStandardized(1:end-1,:);

net = predictAndUpdateState(net,XTrain');
[net,YPred] = predictAndUpdateState(net,YTrain(end,:)');

numTimeStepsTest = length(XTest);
for i = 2:numTimeStepsTest
    [net,YPred(:,i)] = predictAndUpdateState(net,YPred(:,i-1),'ExecutionEnvironment','cpu');
end

% YPred = sig*YPred + mu;
for i = 1:numTimeStepsTest
    YPred(:,i) = YPred(:,i).*sig' + mu';
end

YTest = dataTest(2:end,:)';
rmse = sqrt(mean((YPred(:,6)-YTest(:,6)).^2))

figure
plot(dataTrain(1:end-1,6))
hold on
idx = numTimeStepsTrain:(numTimeStepsTrain+numTimeStepsTest);
plot(idx,[data(numTimeStepsTrain,6) YPred(6,:)],'.-')
hold off
xlabel("time")
ylabel("排放")
title("预测")
legend(["观测量" "预测量"])

figure
subplot(2,1,1)
plot(YTest(6,:))
hold on
plot(YPred(6,:),'.-')
hold off
legend(["观测量" "预测量"])
ylabel("排放")
title("预测量")

subplot(2,1,2)
stem(YPred(6,:) - YTest(6,:))
xlabel("time")
ylabel("Error")
title("RMSE = " + rmse)

 

 

 

4、参考论文


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值