Как выполнить анализ временных рядов на категориальном наборе данных с использованием нейронных сетей - PullRequest
0 голосов
/ 09 июля 2019

У меня есть набор данных с 2 столбцами даты и состояния (36 уникальных значений). Я хочу провести анализ временных рядов с использованием сетевых сетей в этом наборе данных (рекомендуется keras). Я много искал в интернете, но я получаю ответы на числовые данные. Пожалуйста, кто-нибудь, помогите мне, как двигаться вперед с этим набором данных.

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Хорошо, я пытаюсь ответить.Я предполагаю, что у вас установлен 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)
0 голосов
/ 09 июля 2019

Вам нужна сверточная нейронная сеть для вашего решения? В противном случае вы можете использовать LSTM , что довольно часто встречается для анализа временных рядов. Некоторые примеры сетей LSTM в керасе можно найти здесь:

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