我在R中使用插入符号包以适合多个模型。
当我使用trainControl函数而不设置索引参数时,一切都适用于各种方法。但是,当我想通过索引参数手动设置不同折叠的训练行时,我在拟合时会出现以下错误:
出了点问题;缺少所有RMSE指标值
我尝试了不同的方法参数,因为文档没有告诉用户应该使用哪个索引参数集。
如果答案不是微不足道,我会提供一个例子。
谢谢!
答案 0 :(得分:2)
首先,如果您碰巧使用较旧版本的R和插入符号,请务必使用index
参数的命名列表(不使用这些列表可能导致相对难以追踪错误,例如{{3} })。
Caret的维护者Max在this one中说tuneControl
method
index
参数如果设置index
参数则无关紧要 - 这是有意义的因此,您可以定义您的分区包含哪些样本,以及您拥有多少个分区,这几乎指定了重新采样过程。
这是一个最小的工作示例作为参考(请注意library(caret)
library(plyr)
# 5CV with 3 repeats = 15 partitions
m1 <- train(x = iris[,1:2], y = iris[,5], method='lda',
trControl = trainControl(method = 'repeatedcv', number = 5, repeats = 3))
# similar behaviour with using index
index <- llply(1:15, function(x) sample(nrow(iris), round(nrow(iris)*4/5)))
names(index) <- 1:15
m2 <- train(x = iris[,1:2], y = iris[,5], method='lda', trControl = trainControl(index = index))
的命名):
index
这就是> str(index)
List of 15
$ 1 : int [1:120] 47 28 91 54 130 53 37 19 5 85 ...
$ 2 : int [1:120] 65 58 39 120 127 80 102 145 97 132 ...
$ 3 : int [1:120] 113 14 7 62 65 99 108 105 76 123 ...
$ 4 : int [1:120] 124 92 46 1 27 140 33 147 57 6 ...
[...]
的样子:
indexOut
PS:如果您未在trainControl
中设置index
,则\r
的特定分区中不的所有样本都将用于评估用这个分区训练的模型。如果您想要对评估样本进行子集,则可能不需要这样做。有关详细信息,请参阅this answer。