Проблема разделения вашего набора данных по строкам заключается в том, что он может внести смещение в ваш набор для обучения и тестирования, особенно для упорядоченных данных.
# Create a data set
data <- data.frame(year = sample(seq(2000, 2019, by = 1), 1000, replace = T),
data = sample(seq(0, 1, by = 0.01), 1000, replace = T))
nrow(data)
[1] 1000
Если вы действительно хотите взять первые n строк, тогдавы можете попробовать:
first.n.rows <- data[1:1000, ]
Пакет caret
обеспечивает более надежный подход к использованию перекрестной проверки в ваших моделях.
Сначала создайте правило разделения:
library(caret)
inTrain <- createDataPartition(y = data$year,
p = 0.8, list = FALSE)
Примечание y = data$year
это говорит R, что нужно использовать переменную year
для выборки, гарантируя, что вы не получите упорядоченные данные и не внесете смещение в модель.
Аргумент p
указывает, сколькоисходные данные должны быть разделены на обучающий набор, в этом случае 80%.
Затем примените разделение к набору данных:
# Create the training set
train <- data[inTrain,]
# Create the testing set
test <- data[-inTrain,]
nrow(train) + nrow(test)
[1] 1000