подготовка данных с 6 временными точками в последовательной модели: Keras для R - PullRequest
0 голосов
/ 04 марта 2019

У меня есть вопрос о предварительной обработке данных, чтобы ввести их в последовательную модель в кератах для R. Мне нужно быть уверенным, что входные данные верны для модели.Целью последовательной модели является выявление закономерностей в данных временного хода.Это геномные данные.Это выглядит так:

                            t1    t2          t3        t4
ENSMUSG00000001525 3394.482292 1351.0510  302.62711  307.84582
ENSMUSG00000026211  195.055564  178.6283  117.26381   77.10679
ENSMUSG00000055653  110.148598  191.6431   45.99859   49.03902
ENSMUSG00000003038 2455.830408 1390.8977 1090.54737 1107.03441
ENSMUSG00000046434 1093.010618  796.3317  612.57043  710.67373
ENSMUSG00000026417    8.186694  130.4103  193.60001  317.17856 

плюс еще 2 момента времени и т.д ... Строки - это гены.столбцы являются временными точками.Помимо этой матрицы, у меня также есть метаданные для этой матрицы, то есть подробности о том, насколько активен этот конкретный тип клеток и т. Д. ... причина этого в том, что это один орган, и у меня есть еще 9 подобных фреймов данных, таких как этот, которые яхотел бы включить в модель и понять взаимосвязи между различными органами, а также то, как такие факторы, как клеточная активность, играют роль в определении общих изменений в органах (или нет) ... Мой код для последовательной модели следующий, яследуя руководству по последовательным моделям, использующим керасы в R, я хочу быть уверенным, что это ввод данных в виде 20 000 строк (генов) и поиск шаблонов из t1-t6 ...

countsorgan1
column_names <- colnames(countsorgan1)
train_df <- as_tibble(countsorgan1)
colnames(train_df) <- column_names

train_data <- scale(train_data) 
build_model <- function() {

  model <- keras_model_sequential() %>%
    layer_dense(units = 64, activation = "relu",
                input_shape = dim(test_data)[2]) %>%
    layer_dense(units = 64, activation = "relu") %>%
    layer_dense(units = 1)

  model %>% compile(
    loss = "mse",
    optimizer = optimizer_rmsprop(),
    metrics = list("mean_absolute_error")
  )

  model
}

model <- build_model()
model %>% summary()

print_dot_callback <- callback_lambda(
  on_epoch_end = function(epoch, logs) {
    if (epoch %% 80 == 0) cat("\n")
    cat(".")
  }
)    

epochs <- 500

history <- model %>% fit(
  train1,
  epochs = epochs,
  validation_split = 0.2,
  verbose = 0,
  callbacks = list(print_dot_callback)
)

early_stop <- callback_early_stopping(monitor = "val_loss", patience = 20)

model <- build_model()
history <- model %>% fit(
  train_data,
  train_labels,
  epochs = epochs,
  validation_split = 0.2,
  verbose = 0,
  callbacks = list(early_stop, print_dot_callback)
)

IЯ не уверен, что это правильный ответ на вопрос, который я задаю.Одна вещь, в которой я не уверен, это то, каким должен быть «train_labels», и в результате я не могу запустить модель, это метаданные?или значение строки интереса?Будет ли этот код искать изменения от t1-t6 и определять шаблоны, в которые я мог бы затем передать тестовые данные?Бостонский набор данных предполагает, что, может быть, эта таблица, которую я имею, будет транспонирована?

Любая помощь или совет будут высоко оценены!

Большое спасибо!

...