对时间序列数据(牛仔裤销售数据集)进行LSTM预测(Matlab代码实现)

 ‍个人主页:研学社的博客 

欢迎来到本博客❤️❤️

博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

本文目录如下:

目录

1 概述

2 运行结果

3 Matlab代码实现

4 参考文献


1 概述

LSTM模型的一个常见用途是对长时间序列数据进行学习预测,例如得到了某商品前一年的日销量数据,我们可以用LSTM模型来预测未来一段时间内该商品的销量。但对于不熟悉神经网络或者对没有了解过RNN模型的人来说,想要看懂LSTM模型的原理是非常困难的,但有些时候我们不得不快速上手搭建一个LSTM模型来完成预测任务。本文分析在线产品价格数据以预测当前产品价格。

首先建立模型,确定每个因素对定价的影响程度,并且能够预测出在不同变量组合下的价格;从而根据特定的价格水平,对产品进行设计,制定商业策略。

2 运行结果

对时间序列数据(牛仔裤销售数据集)进行LSTM预测(Matlab代码实现)_第1张图片

对时间序列数据(牛仔裤销售数据集)进行LSTM预测(Matlab代码实现)_第2张图片 对时间序列数据(牛仔裤销售数据集)进行LSTM预测(Matlab代码实现)_第3张图片

对时间序列数据(牛仔裤销售数据集)进行LSTM预测(Matlab代码实现)_第4张图片 对时间序列数据(牛仔裤销售数据集)进行LSTM预测(Matlab代码实现)_第5张图片

主函数部分代码:

jean_data = readtable('jean_sales.xlsx');

%    Fill the NaN value with the Nearest value.
jean_data.sales_price = fillmissing(jean_data.sales_price, 'nearest');
lenofdata = length(jean_data.sales_price);


for i=1 : length(jean_data.collect_day)
    jean_data.collect_day(i) = strip(jean_data.collect_day(i),"'");
end

Y = jean_data.sales_price;
data = Y';

numTimeStepsTrain = floor(0.9*numel(data));
dataTrain = data(1:numTimeStepsTrain+1);
dataTest = data(numTimeStepsTrain+1:end);

%   Normalize sales_price to a value between 0 and 1 (Training Data Set)
mu = mean(dataTrain);
sig = std(dataTrain);
dataTrainStandardized = (dataTrain - mu) / sig;
XTrain = dataTrainStandardized(1:end-1);
YTrain = dataTrainStandardized(2:end);

%LSTM Net Architecture Def
numFeatures = 1;
numResponses = 1;
numHiddenUnits = 200;
layers = [ ...
    sequenceInputLayer(numFeatures)
    lstmLayer(numHiddenUnits)
    fullyConnectedLayer(numResponses)
    regressionLayer];
options = trainingOptions('adam', ...
    'MaxEpochs',500, ...
    'GradientThreshold',1, ...
    'InitialLearnRate',0.005, ...
    'LearnRateSchedule','piecewise', ...
    'LearnRateDropPeriod',125, ...
    'LearnRateDropFactor',0.2, ...
    'Verbose',0, ...
    'Plots','training-progress');
    
%    Train LSTM Net
net = trainNetwork(XTrain,YTrain,layers,options);

%    Normalize sales_price to a value between 0 and 1 (Testing Data Set)
dataTestStandardized = (dataTest - mu) / sig;
XTest = dataTestStandardized(1:end-1);
net = predictAndUpdateState(net,XTrain);
[net,YPred] = predictAndUpdateState(net,YTrain(end));

%   Predict as long as the test period (2019.05.07 ~ 2019.10.31)
numTimeStepsTest = numel(XTest);
for i = 2:numTimeStepsTest
    [net,YPred(:,i)] = predictAndUpdateState(net,YPred(:,i-1),'ExecutionEnvironment','cpu');
end

3 Matlab代码实现

4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]杨青,王晨蔚.基于深度学习LSTM神经网络的全球股票指数预测研究[J].统计研究,2019,36(03):65-77.DOI:10.19343/j.cnki.11-1302/c.2019.03.006.

你可能感兴趣的:(#,神经网络预测预测与分类,#,数学建模比赛,lstm,人工智能,rnn)