Прогноз временных рядов lstm для данных о событиях
Я пытаюсь решить проблему временного ряда. Набор данных имеет n систем, и мы записываем количество отказов, произошедших в каждой системе, в течение примерно t дней. Тогда моя цель состоит в том, чтобы предсказать количество ошибок, которые могут произойти в любой данной системе в t+1 день. Набор данных игрушек выглядит примерно так. При этом в каждой строке указывается количество неисправностей в течение 11 дней подряд для одной системы.
x = [[0,1,2,20,24,8,2,2,1,2,1],
[0,100,200,250,300,80,25,20,10,1,1],
[1,25,30,35,10,0,0,1,1,0,1],
[0,10,10,2,24,8,2,2,1,2,1],
[0,4,20,20,24,80,10,20,30,90,150]]
тогда мои тренировочные данные исключают последний день для каждого ряда.
x_train = [[0,1,2,20,24,8,2,2,1,2],
[0,100,200,250,300,80,25,20,10,1],
[1,25,30,35,10,0,0,1,1,0],
[0,10,10,2,24,8,2,2,1,2],
[0,4,20,20,24,80,10,20,30,90]]
Как мне изменить мои данные для работы с LSTM. Любые примеры кодов очень ценятся. Все существующие коды моделируют единое целое, где, как и в моем случае, у меня есть n разных систем. Вот моя простая попытка. Пожалуйста, оставьте отзыв, соответствует ли мое требование. Мои данные выглядят следующим образом.
| | t1 | t2 | T3 | | ---- | ---- | ---- | ---- | | х1 | 1 | 2 | 3 | | х2 | 3 | 4 | 5 | | х3 | 5 | 6 | 7 |
x = np.array([[1,2],[3,4],[5,6]])
y = np.array([[2,3],[4,5],[6,7]])
x = np.reshape(x,(3,1,2))
y = np.reshape(y,(3,2))
test_x = np.array([[6,7]])
test_x = np.reshape(test_x,(1,1,2))
model = Sequential()
model.add(LSTM(4,batch_input_shape=(1,1,2), return_sequences=False))
model.add(Dense(2,activation='relu'))
model.compile(loss='mean_absolute_error', optimizer='adam')
model.fit(x, y,nb_epoch= 100, batch_size=1)
model.reset_states()
model.predict(test_x)
Спасибо
1 ответ
Если вам нужна модель для прогнозирования t+1, вам просто нужно сместить позицию данных 1 вправо, чтобы получить метку. Если у вас есть данные: [1,2,3,4,5,6,7]
и seq_len равен 3, например, ваш пакет входных данных [[1,2,3], [4,5,6]]
Ваша целевая партия данных будет [[2,3,4],[5,6,7]]
код может быть, как показано ниже:
inputs = np.array(int_text[: n_batches * batch_size * seq_length])
outputs = np.array(int_text[1: n_batches * batch_size * seq_length + 1])
x = np.split(inputs.reshape(batch_size, -1), n_batches, 1)
y = np.split(outputs.reshape(batch_size, -1), n_batches, 1)
РЕДАКТИРОВАТЬ:
[[1,2,3], [4,5,6]]
является входной партией batch_size
2, seq_length 3.
[[2,3,4],[5,6,7]]
целевая партия batch_size
2, seq_length 3.
Независимо от того, какой метод вы используете, все, что вам нужно, это сделать ваши данные, как указано выше.