Добавление функций в генератор временных рядов keras для LSTM - PullRequest
0 голосов
/ 27 января 2020

Я работаю с временными сериями в Керасе (впервые в жизни). Я нашел полезный инструмент Кераса для работы с временными рядами, генераторами временных рядов. Я пытаюсь предсказать количество проданных единиц и денег (2 outpus). Я хотел бы поставить некоторые другие функции. Код выглядит следующим образом:

from numpy import array

from numpy import hstack

from keras.preprocessing.sequence import TimeseriesGenerator

# define dataset

in_seq1 = array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])

in_seq2 = array([15, 25, 35, 45, 55, 65, 75, 85, 95, 105])

# reshape series

in_seq1 = in_seq1.reshape((len(in_seq1), 1))

in_seq2 = in_seq2.reshape((len(in_seq2), 1))

# horizontally stack columns

dataset = hstack((in_seq1, in_seq2))

print(dataset)

# define generator

n_input = 2

generator = TimeseriesGenerator(dataset, dataset, length=n_input, batch_size=1)

# number of samples

print('Samples: %d' % len(generator))

# print each sample

for i in range(len(generator)):

    x, y = generator[i]

    print('%s => %s' % (x, y))

2 inupt-массива продаются в единицах и продаются в деньгах. У меня есть другая особенность в моем наборе данных, которую я должен использовать: is_promo, переменная Боллеана, которая означает, находится ли продукт в продвижении или нет. Моя идея - присоединиться к этой функции на тот день, который я бы предсказал, чтобы увидеть разницу между добавлением или не продвижением продукта. Помогите пожалуйста, grettings

1 Ответ

0 голосов
/ 30 января 2020

Вам нужно будет добавить еще одну последовательность ввода, in_seq3, которая определяет, является ли продвижение активным или нет. Я бы просто закодировал его как список 0 и 1, где 0 означает отсутствие продвижения, а 1 означает, что повышение произошло. Так что просто добавьте:

in_seq3 = array([0,1,0,1,1,1,0,1,1,0]) #Example data

и вместо этого используйте

dataset = hstack((in_seq1, in_seq2, in_seq3))

Наконец, используйте

generator = TimeseriesGenerator(dataset, dataset[:, :2], length=n_input, batch_size=1)

([:, :2] гарантирует, что ваш вывод не излишне включите поле для продвижения.)

Теперь, когда вы изменили свои данные и подготовили их для обучения модели, вам нужно фактически обучить модель. Для этого есть много уроков онлайн. Удачи!

...