Чтобы разделить данные обучения и тестирования в R, существует несколько методов. Вот несколько часто используемых подходов:
-
Случайное разделение. Этот метод случайным образом делит набор данных на обучающий и проверочный наборы. Вы можете использовать функцию
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, ]
-
Разделение по времени. Если ваши данные содержат временной компонент, например временной ряд, вы можете разделить их на основе определенного момента времени. Например, вы можете использовать определенную дату, чтобы разделить данные на обучающий набор, содержащий данные до этой даты, и тестовый набор, содержащий данные после этой даты.
-
Стратифицированное разделение. При работе с несбалансированными наборами данных, где распределение классов неравномерно, полезно выполнить стратифицированное разделение. Это гарантирует сохранение доли каждого класса как в обучающем, так и в тестовом наборах. Для этой цели обычно используется функция
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
именем переменной, которую вы пытаетесь предсказать.