Разделение данных обучения и испытаний в R

Чтобы разделить данные обучения и тестирования в R, существует несколько методов. Вот несколько часто используемых подходов:

  1. Случайное разделение. Этот метод случайным образом делит набор данных на обучающий и проверочный наборы. Вы можете использовать функцию sample()для случайного выбора индексов для обучающих и тестовых данных. Вот пример:

    set.seed(123)  # Set a seed for reproducibility
    train_indices <- sample(1:nrow(data), size = 0.7 * nrow(data))  # 70% for training
    train_data <- data[train_indices, ]
    test_data <- data[-train_indices, ]
  2. Разделение по времени. Если ваши данные содержат временной компонент, например временной ряд, вы можете разделить их на основе определенного момента времени. Например, вы можете использовать определенную дату, чтобы разделить данные на обучающий набор, содержащий данные до этой даты, и тестовый набор, содержащий данные после этой даты.

  3. Стратифицированное разделение. При работе с несбалансированными наборами данных, где распределение классов неравномерно, полезно выполнить стратифицированное разделение. Это гарантирует сохранение доли каждого класса как в обучающем, так и в тестовом наборах. Для этой цели обычно используется функция createDataPartition()из пакета caret.

Вот пример послойного разделения с использованием пакета caret:

library(caret)
set.seed(123)
train_indices <- createDataPartition(data$target_variable, p = 0.7, list = FALSE)
train_data <- data[train_indices, ]
test_data <- data[-train_indices, ]

Не забудьте заменить dataименем вашего фактического набора данных, а target_variableименем переменной, которую вы пытаетесь предсказать.