LSTM Keras: изменить исходные данные - PullRequest
0 голосов
/ 26 февраля 2020

Я хочу построить модель LSTM Autoencoder для поведения клиентов и обнаружения аномалий. Набор данных активности выглядит следующим образом:

customer_id               features
C1                   [[1,2,1,0,1],[2,2,1,1,0],[1,2,3,1,1],[0,3,2,1,1]]
C2                   [[2,1,1,4,1],[3,2,1,1,4],[2,2,3,1,2]]
..............................................
Cn                   [[2,3,1,4,1],[2,1,1,1,0],[4,2,2,1,2],[3,3,2,1,1], [2,3,2,1,2], [1,3,2,2,1]]

Здесь количество объектов для всех образцов одинаково, т. Е. 5. Однако, нет. Образцы разные для разных Заказчиков. Есть N клиентов.
В таком случае, как разделить данные обучения и тестирования и как изменить входные данные для модели LSTM?

На данный момент

  1. Я рассматриваю, например, 80% выборок из данных каждого клиента в качестве обучения и оставаясь в качестве тестирования.
  2. Попытка изменить входные данные как : (no_of_customers, временные шаги, no_of_features) = (n, #no_of_samples, 5). Этот массив не поддерживается, так как мы не можем иметь массив numpy с различными временными шагами.

1 Ответ

0 голосов
/ 26 февраля 2020

В таком сценарии ios вам нужно использовать отступы. см. руководство по тензорному заполнению

from tensorflow.keras.preprocessing.sequence import pad_sequences

# club all features (c1, c2 ... features, I clubbed c1. c2 only) as a below:    
input1 = [[[1,2,1,0,1],[2,2,1,1,0],[1,2,3,1,1],[0,3,2,1,1]],
         [[2,1,1,4,1],[3,2,1,1,4],[2,2,3,1,2]]]

padded_input = pad_sequences(input1, padding='post')
print(padded_input)

Вы также можете установить maxlen аргумент, в зависимости от максимального списка, заданного для клиентов

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