时间序列-预测-模型:LSTM【单特征/多特征】【利用前50个时间步的数值预测接下来的10个时间步的数值:(0-49)->50;(1-50此50为上一步预测出的)->51;(2-51)->52...】

文章介绍了一种基于LSTM的时间序列预测方法,首先训练模型预测单日价格,然后滚动使用预测结果作为新历史数据持续预测未来20天的价格。模型采用PyTorch的nn.LSTM层,输入维度依据数据特征数量设定,通过线性层进行回归预测。
摘要由CSDN通过智能技术生成

假如我有一个时间序列,例如是前100天的价格数据,然后我希望借此预测后20天的数据,这里为了方便每一天的数据只有一个价格。但是每一天的数据也可以是多维的,也就是每一天都有好多特征。

具体思想

首先训练模型预测下一天数据的能力,训练完后,我们使用历史数据预测第114天的数据,预测后,我们暂时将第114天的数据看做真是数据,放入历史数据中,再用它预测第115天的数据,依次类推,最终预测完后30天的数据。

定义模型

我们会使用torch.nn.LSTM()加载LSTM层。其参数定义如下:

在这里插入图片描述

 其中:

  • input_size是我们输入的数据的维度,可以理解为我们每一天数据的维度。在这个问题里,每一天我们有的数据只有价格,因此input_size是1。如果每一天数据有n个特征,那么input_size是n。
  • hidden_size是隐藏状态h的特征数。关于LSTM中的具体结构我还没有很清楚,可以查看一下知乎问题。在这里我认为可以随意设置。
  • num_layers是我们要堆叠几个LSTM层。
class RegLSTM(nn.Module):
    def __init__(self, inp_dim, out_dim, mid_dim, mid_layers):
        super(RegLSTM, self).__init__()

        self.rnn = nn.LSTM(inp_dim, mid_dim, mid_layers)  # rnn
        self.reg = nn.Sequential(
            nn.Linear(mid_dim, mid_dim),
            nn.Tanh(),
            nn.Linear(mid_dim, out_dim),
        )  # regression

    def forward(self, x):
        y = self.rnn(x)[0]  # y, (h, c) = self.rnn(x)     
        seq_len, batch_size, hid_dim = y.shape
        y = y.view(-1, hid_dim)                           
        y = self.reg(y)                                   
        y = y.view(seq_len, batch_size, -1)               
        return y

    """
    PyCharm Crtl+click nn.LSTM() jump to code of PyTorch:
    Examples::
        >>> rnn = nn.LSTM(10, 20, 2)
        >>> input = torch.randn(5, 3, 10)     # 5个时间步,也就是每个时间序列的长度是5,3表示一共有3个时间序列,10表示每个序列在每个时间步的维度是10
        >>> h0 = torch.randn(2, 3, 20)
        >>> c0 = torch.randn(2, 3, 20)
        >>> output, (hn, cn) = rnn(input, (h0, c0))
    """

    def output_y_hc(self, x, hc):

        y, hc = self.rnn(x, hc)  # y, (h, c) = self.rnn(x)

        seq_len, batch_size, hid_dim = y.size()
        y = y.view(-1, hid_dim)
        y = self.reg(y)
        y = y.view(seq_len, batch_size, -1)
        return y, hc

LSTM入门例子:根据前9年的数据预测后3年的客流(PyTorch实现) - 知乎

使用LSTM进行简单时间序列预测(入门全流程,包括如何整理输入数据)_lstm预测_eecspan的博客-CSDN博客

时间序列预测——LSTM_行者无疆_ty的博客-CSDN博客_时间序列lstm

多变量时间序列的多步预测——LSTM模型 - 知乎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值