使用RNN进行时间序列分析的发生器

时间:2018-06-01 08:45:16

标签: r dataframe time-series rnn

使用Recurrent Neural Network进行时间序列分析的生成器函数存在问题。我有一个包含5种不同CDS报价的数据集。我想在多输入/多输出网络中使用递归神经网络来分析这些。 5个引号作为输入,5个引号作为输出。

因此我有一个生成器可以在一个输出中转换多个输入,但我无法为我的目的更改此代码。

回顾是网络应该回归的程度, 延迟是预测的时间范围 step是1,因为我有每日数据,没有更深入的每小时或分钟数据。 使用索引可以决定子集内部的行(训练,验证,测试)。

以下是代码:

generator <- function(data, lookback, delay, min_index, max_index,
                  shuffle = FALSE, batch_size = 128, step = 1) {
if (is.null(max_index))
    max_index <- nrow(data) - delay - 1
i <- min_index + lookback
 function() {
    if (shuffle) {
        rows <- sample(c((min_index+lookback):max_index), size = batch_size)
    } else {
        if (i + batch_size >= max_index)
            i <<- min_index + lookback
        rows <- c(i:min(i+batch_size-1, max_index))
        i <<- i + length(rows)
    }

    samples <- array(0, dim = c(length(rows), 
                                lookback / step,
                                dim(data)[[-1]]))
    targets <- array(0, dim = c(length(rows)))

    for (j in 1:length(rows)) {
        indices <- seq(rows[[j]] - lookback, rows[[j]]-1, 
                       length.out = dim(samples)[[2]])
        samples[j,,] <- data[indices,]
        targets[[j]] <- data[rows[[j]] + delay, 1]
    }            

    list(samples, targets)
}

}

希望有人可以帮我解决这个问题,或者有一些其他有用的链接来构建带有时间序列财务数据的RNN。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

O.K, 似乎我自己找到了解决方案。 而不是

targets <- array(0, dim = c(length(rows)))

这是一个载体,我用过

targets <- array(0, dim = c(length(rows),dim(data)[[-1]]))

现在是一个矩阵。

然后写下

targets[j,] <- data[rows[[j]] + delay, ]

而不是

targets[[j]] <- data[rows[[j]] + delay, 1]

此生成器为多个输出创建3D Tensor。