У меня есть ежедневные данные временного ряда, как показано ниже.
CashIn CashOut
Date
2016-01-01 0.0 6500.0
2016-01-02 0.0 23110.0
2016-01-03 0.0 7070.0
2016-01-04 0.0 18520.0
2016-01-05 20840.0 22200.0
.
.
.
2019-03-25 59880.0 25500.0
2019-03-26 49270.0 17860.0
2019-03-27 45160.0 48600.0
2019-03-28 39480.0 22840.0
2019-03-29 70260.0 25950.0
2019-03-30 19250.0 24350.0
2019-03-31 46870.0 14400.0
Мой общий объем данных составляет 1186. Я хочу спрогнозировать значения CashIn и CashOut между 2019-04-01 и 2019-04-30, используя LSTM.
Я написалПакетный калькулятор, как показано ниже.
def get_batches(arr, batch_size, seq_length):
batch_size_total = batch_size * seq_length
n_batches = len(arr)//batch_size_total
arr = arr[:n_batches * batch_size_total]
arr = arr.reshape((batch_size, -1))
for n in range(0, arr.shape[1], seq_length):
x = arr[:, n:n+seq_length]
y = np.zeros_like(x)
try:
y[:, :-1], y[:, -1] = x[:, 1:], arr[:, n+seq_length]
except IndexError:
y[:, :-1], y[:, -1] = x[:, 1:], arr[:, 0]
yield x, y
Я пытаюсь разделить этот набор данных с помощью функции get_batches на пакеты, которые имеют длину 30 последовательностей, потому что у меня есть дневные временные ряды, и я хочу прогнозировать следующие 30 дней.
batches = get_batches(np.array(data_cashIn), 40, 30)
Если я записываю 39 вместо 40 в качестве параметра в функции get_bathces, то я теряю последние 16 ежедневных данных, но не хочу их терять.
Как я могу это сделатьправильно?