R, Caret: как указать наборы для обучения и проверки (проверки)?

У меня есть набор данных, и я хотел бы, чтобы курсор обучался и проверял только определенную часть моего набора данных. У меня есть два списка

train.ids <- list(T1=c(1,2,3), T2=c(4,5,6), T3=c(7,8,9))

а также

test.ids <- list(T1=c(10,11,12), T2=c(13,14,15), T3=(16,17,18))

которые соответствуют индексам строк в моем наборе данных. train.ids$T1 следует использовать для обучения, а test.ids$T1 - для тестирования. То же самое касается Т2 и Т3.

Я пробовал использовать

trainControl(method="cv", index=train.ids, indexOut=test.ids)

но это не похоже на правильный способ использования trainControl.

Любая помощь высоко ценится


person Community    schedule 28.04.2014    source источник
comment
Поскольку они соответствуют индексам строк вашего набора данных, вам нужно сделать df[tain.ids,], где df - ваш набор данных в data.frame   -  person infominer    schedule 29.04.2014
comment
Спасибо за ваш вклад! Поскольку test.ids является именованным списком, я не могу проиндексировать фрейм данных с помощью test.ids. Согласно документации каретки index и indexOut - это списки индексов строк, и это то, что также возвращает createDataPartition(df) или createTimeSlices.   -  person    schedule 29.04.2014
comment
Я должен был добавить, чтобы использовать train.ids$T1 и test.ids$T1, как вы упомянули в своем вопросе.   -  person infominer    schedule 29.04.2014
comment
Тогда я бы тренировался и тестировал только на Т1, но не на Т2 и Т3. Извините, мой вопрос мог быть двусмысленным; Я хочу использовать все пары поездов и тестов.   -  person    schedule 29.04.2014


Ответы (1)


Произошла ли ошибка? Я не уверен, почему это не сработает. Вот пример:

library(caret)

## A small data set example
set.seed(2)
dat <- twoClassSim(9)[, 13: 16]

fit_on <-  list(rs1 = 1:3, rs2 = 4:6,         rs3 = 7:9)
pred_on <- list(rs1 = 4:9, rs2 = c(1:3, 7:9), rs3 = 1:6)

ctrl <- trainControl(method = "cv", 
                     ## The method doesn't really matter
                     ## since we are defining the resamples
                     index= fit_on, indexOut = pred_on,
                     verboseIter = TRUE,
                     savePredictions = TRUE)

mod <- train(Class ~ ., data = dat, method = "lda",
             trControl = ctrl)

Взгляните на mod$pred, и вы увидите, что было предсказано на каждой итерации.

Максимум

person topepo    schedule 30.04.2014