R,Caret:我如何指定训练和保持(验证)集?

时间:2014-04-28 22:01:27

标签: r cross-validation indices r-caret training-data

我有一个数据集,并且希望仅在我的数据集的特定部分进行训练和验证。我有两个清单

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应该用于测试。 T2和T3也一样。

我尝试使用

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

但这似乎不是使用trainControl的正确方法。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:3)

是否产生错误?我不确定为什么这不起作用。这是一个例子:

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,您可以看到每次迭代时的预测结果。

最高