Я пытаюсь классифицировать несколько независимых последовательностей с помощью Keras. Мои данные выглядят следующим образом (пример с разными акциями и их значениями).
_stock 2010 2011 2012 2013 2014
----------- ------ ------ ------ ------ ------
foo 100 200 250 300 400
bar 50 100 100 50 25
pear 100 250 250 300 400
raspberry 100 200 300 400 500
banana 50 20 10 10 5
Я хотел бы классифицировать данные, как показано в следующей структуре. Ярлыки уже предварительно определены для каждой акции (контролируемое обучение).
_stock label
----------- -----------------
foo 0 (not falling)
bar 1 (falling)
pear 0 (not falling)
raspberry 0 (not falling)
banana 1 (falling)
Наконец, я также хотел бы предсказать значение на следующем временном шаге, если это возможно.
_stock 2015
----------- ------
foo 450
bar 10
pear 500
raspberry 600
banana 1
В настоящее время я просто использую несколько плотных слоев, которые работают нормально, но я думаю, что я не использую отношения между каждым столбцом правильным образом с этой настройкой. Более того, я не думаю, что при такой настройке возможен прогноз. Я хотел бы использовать что-то вроде сети LSTM, но не знаю, как изменить свою реализацию.
# current network
from keras.models import Sequential
n_timesteps = len(data.columns)
model = Sequential()
model.add(Dense(100, activation="relu", input_dim=n_timesteps))
model.add(Dense(100, activation="relu"))
model.add(Dense(1, activation="sigmoid"))
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
model.fit(x_train, y_train, epochs=100, validation_data=(x_test, y_test))