我有一个数据集,并且希望仅在我的数据集的特定部分进行训练和验证。我有两个清单
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的正确方法。
非常感谢任何帮助
答案 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
,您可以看到每次迭代时的预测结果。
最高