Согласно документации trainControl
:
... Список должен содержать B + 1 элементов, где B - количество повторных выборок, если только метод не является «boot632», в этом случае B - этоколичество повторных выборок плюс 1. Первые B элементов списка должны быть векторами целых чисел длины M, где M - количество оцениваемых моделей.Последний элемент списка должен быть только одним целым числом (для окончательной модели).См. Раздел «Примеры» ниже и раздел «Сведения».
При ручной настройке семян требуется количество оцениваемых моделей.Это может быть неочевидно, так как поезд выполняет некоторые оптимизации для определенных моделей.Например, при настройке модели PLS единственной подходящей моделью является модель с наибольшим количеством компонентов.Таким образом, если модель настраивается на comp в 1:10, то подходит только модель ncomp = 10. Однако, если вектор целых чисел, используемых в аргументах seed, длиннее, чем фактически необходимо, ошибка не выдается.
Я предполагаю, что the number of models being evaluated
- это tuneLength
или tuneGrid
# строк, в случае knn
.Однако в разделе «Примеры» они различаются (22 против 12):
set.seed(123)
seeds <- vector(mode = "list", length = 51)
for(i in 1:50) seeds[[i]] <- sample.int(1000, 22) # this 22
## For the last model:
seeds[[51]] <- sample.int(1000, 1)
ctrl <- trainControl(method = "repeatedcv",
repeats = 5,
seeds = seeds)
set.seed(1)
mod <- train(Species ~ ., data = iris,
method = "knn",
tuneLength = 12, # this 12
trControl = ctrl)
Предназначено ли 22 специально?
Тогда какой смысл устанавливать второе семя (set.seed(1)
), если мы предоставим уже семена через ctrl
?