Я делаю прогноз по ежедневным данным о продажах компании, использующей 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)