Caret允许您使用选项index
和indexOut
设置自定义培训和验证集,但是当获得的模型应用于验证集并测量其性能时,这非常与模型本身提供的不同:
library(caret)
library(Metrics)
set.seed(123)
index_on <- 1:16
index_out <- 17:32
fit <- train(mpg~wt+qsec,
mtcars,
method = "glm",
metric = "RMSE",
trControl = trainControl(method="cv",
index = list(index_on),
indexOut = list(index_out))
)
fit$results$RMSE
rmse(mtcars[index_out, "mpg"], predict(fit, mtcars[index_out,]))
正如您所看到的,当从火车对象获得或直接使用预测计算时,这会产生不同的性能值:
[1] 3.612743
[1] 3.079445
这是一个错误吗?我在这里错过了什么吗?
答案 0 :(得分:1)
我一直在调查,看起来内部列车计算正确的预期模型并使用该模型计算性能,但它返回不同的模型。它返回一个获得的训练所有数据(不仅是&#34;索引&#34;数据)。
您可以使用以下代码查看:
group by
产生:
[1] 3.079445
我使用的是最新的当前插入符号版本(目前为caret_6.0-75)。 很明显,这是一个但是当我发现它已经是一个开放的bug时我会报告它: