Исключение данных одного горячего восстановления из прогноза LSTM - PullRequest
0 голосов
/ 07 июня 2019

Я делаю прогноз по ежедневным данным о продажах компании, использующей Keras LSTM. Первоначальная форма данных [60 магазинов х 1034 дней х 207 товаров]. Я создал горячее представление дней вроде:

  • Понедельник 1 0 0 0 0 0 0
  • Вторник 0 1 0 0 0 0 0
  • Среда 0 0 1 0 0 0 0
  • четверг 0 0 0 1 0 0 0
  • Пятница 0 0 0 0 1 0 0
  • Суббота 0 0 0 0 0 1 0
  • Воскресенье 0 0 0 0 0 0 1

Этот представитель добавляется к дате всех магазинов, поэтому форма новой формы составляет [60 магазинов x 1034 дней x (207 товаров + 7 дней)]

Я добавил еще один столбец с именем S_day для значимых дней со значением 0 или 1.

Таким образом, окончательный размер данных [60 x 1034 x 215].

Я использую для поезда верхние 973 дня и для тестирования последние 61 день из набора для everyshop.
train_x [60 x 973 x 215]
train_y [60 x 973 x 215]
test_x [60 x 973 x 215] (форма данных [60 x 61 x 215], но мы добавляем нули в соответствии с формой)
test_y [60 x 973 x 215] (форма данных [60 x 61 x 215], но мы добавляем нули в соответствии с формой)

y данные - это данные x, сдвинутые с лагом -1, чтобы иметь цель прогнозирования на следующий день.

Моя проблема в том, что мне нужно исключить эти 8 дополнительных столбцов из моего окончательного прогноза.

# design model
model = Sequential()
model.add(LSTM(100, input_shape=(train_x.shape[1], train_x.shape[2]), return_sequences=True))
model.add(Dense(train_x.shape[2]))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])


# fit model
history = model.fit(train_x, train_y,
                    epochs=10,
                    batch_size=2,
                    validation_data=(test_x, test_y),
                    verbose=2,
                    shuffle=False)


# make a prediction
test_pred = model.predict(test_x)

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Я нашел способ ее решить. Мне нужно было только изменить форму отбрасывания 8 столбцов из train_y и train_x, чтобы иметь 207 объектов и иметь на входе плотного слоя 207

0 голосов
/ 07 июня 2019

Я думаю, что вы допустили ошибку в своих измерениях. Это должно быть (60 x 1034 x 7 x 207 x 1). Таким образом, сеть имеет 4-х затемненный вход, и вы сглаживаетесь, прежде чем переходить к плотному слою и получать выходные данные. Если бы вы могли опубликовать изображение своего кода для получения данных, это можно сделать немного более ясным.

Вывод можно преобразовать во что угодно, используя one_hot_decoder ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...