Разделение набора данных изображения: обучение, проверка и тестирование - PullRequest
0 голосов
/ 15 июня 2019

У меня есть некоторый код R, в котором я разбил данные изображения на набор для обучения и проверки для задачи классификации машинного обучения. Это сработало просто отлично, но теперь мне нужно добавить окончательный набор тестов. Теперь я получаю сообщение об ошибке, но не уверен, что не так.

Вот код, который я пробовал и работал:

image_subset <-
    cbind(file_paths = image_names_subset$file_paths, y_subset) %>%
    mutate(file_paths = as.character(file_paths))

  y_cols <- colnames(y_subset)

  subset_output_classes <- y_cols

  train_val_split <- 0.70

  train_image_rows <-
    sort(sample(nrow(image_subset), train_val_split * nrow(image_subset)))

  val_image_rows <-
    which(!(seq(1, nrow(image_subset)) %in% train_image_rows))

  image_subset_train <-
    image_subset[train_image_rows, ]

  image_subset_val <-
    image_subset[-train_image_rows, ]
 image_subset <-
    cbind(file_paths = image_names_subset$file_paths, y_subset) %>%
    mutate(file_paths = as.character(file_paths))

  y_cols <- colnames(y_subset)

  subset_output_classes <- y_cols

  train_val_split <- 0.60


#Added, want to be able to split the remaining 40% of data in 1/2 for validation and test sets 

val_test_split <- 0.50 

  train_image_rows <-
    sort(sample(nrow(image_subset), train_val_split * nrow(image_subset)))

# Added
  val_image_rows <-
    which(!(seq(1, nrow(image_subset)) %in% train_image_rows))

# Error occurs here when I run this command
  test_image_rows <- sample(nrow(val_image_rows), val_test_split * nrow(val_image_rows))

  val_image_rows2 <- which(!(seq(1, nrow(val_image_rows)) %in% test_image_rows))
  • Ожидается 60% строк из image_subset для заполнения train_image_rows. Это сработало

  • Я ожидал, что оставшиеся 40% строк заполнят val_image_rows. Это также сработало

  • Я получаю сообщение об ошибке при попытке разделить набор тестов для заполнения test_image_rows:

Error in sample.int(length(x), size, replace, prob) : 
invalid 'size' argument

1 Ответ

0 голосов
/ 16 июня 2019

Выяснил проблему: - val-image_rows - это вектор номеров строк, а не фрейм данных, такой как image_subset - используйте следующий код:

 train_image_rows <-
    sort(sample(nrow(image_subset), train_val_split * nrow(image_subset)))

# All rows for validation and test
val_image_rows <-
    which(!(seq(1, nrow(image_subset)) %in% train_image_rows))

# Validation set rows only
val_image_rows2 <- sample(val_image_rows, val_test_split * length(val_image_rows))

# Test set rows only
test_image_rows <- val_image_rows[which(!(val_image_rows %in% val_image_rows2))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...