使用插入符号包时的自定义训练行
Custom training rows when using caret package
我正在使用 R 中的 caret 包来拟合多个模型。
当我在不设置索引参数的情况下使用 trainControl 函数时,各种方法都可以正常工作。但是,当我想通过索引参数手动设置不同折叠的训练行时,拟合时出现以下错误:
出了点问题;所有 RMSE 指标值都缺失
我尝试了不同的方法参数,因为文档没有告诉用户应该使用哪个方法参数集。
如果答案不简单,我会提供一个例子。
谢谢!
首先,如果您碰巧使用旧版本的 R 和插入符号,请务必为 index
参数使用命名列表(不使用这样可能会导致相对难以追踪错误,例如 this one).
Max,插入符号的维护者,在 this answer 中声明,在 tuneControl
中,如果您设置 index
参数,则 method
参数不再重要 - 这这很有意义,因为您定义了 您的分区包含哪些样本 ,以及 您有多少个分区 ,这几乎指定了重采样过程。
这里有一个最小的工作示例作为参考(注意 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 ...
[...]
PS:如果你不在trainControl
中设置indexOut
,所有不是的样本在[的特定分区中=12=] 将用于评估使用此分区训练的模型。如果您还想对评估样本进行子集化,这可能是不希望的。有关详细信息,请参阅 。
我正在使用 R 中的 caret 包来拟合多个模型。
当我在不设置索引参数的情况下使用 trainControl 函数时,各种方法都可以正常工作。但是,当我想通过索引参数手动设置不同折叠的训练行时,拟合时出现以下错误:
出了点问题;所有 RMSE 指标值都缺失
我尝试了不同的方法参数,因为文档没有告诉用户应该使用哪个方法参数集。
如果答案不简单,我会提供一个例子。
谢谢!
首先,如果您碰巧使用旧版本的 R 和插入符号,请务必为 index
参数使用命名列表(不使用这样可能会导致相对难以追踪错误,例如 this one).
Max,插入符号的维护者,在 this answer 中声明,在 tuneControl
中,如果您设置 index
参数,则 method
参数不再重要 - 这这很有意义,因为您定义了 您的分区包含哪些样本 ,以及 您有多少个分区 ,这几乎指定了重采样过程。
这里有一个最小的工作示例作为参考(注意 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 ...
[...]
PS:如果你不在trainControl
中设置indexOut
,所有不是的样本在[的特定分区中=12=] 将用于评估使用此分区训练的模型。如果您还想对评估样本进行子集化,这可能是不希望的。有关详细信息,请参阅