Хорошо, я пытаюсь ответить.Я предполагаю, что у вас установлен tenorflowВы думаете, что у вас есть данные в такой форме
date state
01.01.2018 state1
02.01.2018 state2
....
Вы хотите выполнить прогнозирование временных рядов.Я предполагаю, что вам не нужно указывать дату в сети.Таким образом, ваша основная установка состоит в том, что вы задаете n состояний в качестве входных данных и ожидаете, что модель будет предсказывать.Вы правильно пишете, что вам нужно как-то кодировать категориальную переменную.Вы выбираете одну горячую кодировку.Я советую вам посмотреть на это и это .Но сейчас мы предполагаем, что вы используете горячее кодирование.
Предположим, что ваш набор данных выглядит следующим образом:
state1
state2
state1
state3
state2
state1
state1
state2
Ваш первый выбор - определить n (число образцов, которые вы используете дляпредсказание n + 1 выборка).А пока рассмотрим n 3. Какие люди должны выглядеть как ваши входные данные:
[[state1, state2, state1],
[state2, state1, state3],
[state1, state3, state2],
[state3, state2, state1],
[state2, state1, state1]]
И выходные данные будут:
[[state3],
[state2],
[state1],
[state1],
[state2]]
Вы используете один горячий (пожалуйста, посмотрите на встраивание слоев иword2vec), и в этом примере это означает, что
state1 = [1, 0, 0]
state2 = [0, 1, 0]
state3 = [0, 0, 1]
О модели, я предполагаю, что вы планируете использовать LSTM, который в Keras требует, чтобы входные данные имели форму выборок x временных шагов x функций .Таким образом, для этого примера это означает, что ваши входные данные должны выглядеть следующим образом:
[[[[1], [0], [0]], [[0], [1], [0]], [[1], [0], [0]]],
[[[0], [1], [0]], [[1], [0], [0]], [[0], [0], [1]]],
...
Когда у вас есть данные в этой форме, модель будет выглядеть как
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import LSTM, Dense
#create input output pairs in sense of example
x, y = createDataset()
#define model topology
model = Sequential()
model.add(LSTM(nb_of_units, input_shape(time_steps, features)))
model.add(Dense(size_of_one_hot_vector, activation="softmax"))
#select optimizer, loss and metric
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=['acc'])
#fit model to data
history = model.fit(x, y, epochs=nb_of_epochs, batch_size=batch_size, shuffle=False)