Rob*_*rtF 4 r prediction cross-validation r-caret
我有点困惑插入符号如何在 k 折交叉验证中对测试折叠进行评分。
我想生成一个数据框或矩阵,其中包含 10 折交叉验证中十个测试数据集的评分记录。
例如,使用 iris 数据集训练决策树模型:
install.packages("caret", dependencies=TRUE)
library(caret)
data(iris)
train_control <- trainControl(method="cv", number=10, savePredictions = TRUE),
model <- train(Species ~ ., data=iris, trControl=train_control, method="rpart")
model$pred
Run Code Online (Sandbox Code Playgroud)
该model$pred命令列出了 450 条记录中十倍的预测。
这似乎不对 - 不应该对十个测试折叠中model$pred的150 条记录产生预测(1/10 * 150 = 每个测试折叠 15 条记录)?450条记录是如何产生的?
默认情况下,为(请参阅)train的复杂性参数迭代三个值: cprpart?rpart.control
library(caret)
data(iris)
train_control <- trainControl(method="cv", number=10, savePredictions = TRUE)
model <- train(Species ~ .,
data=iris,
trControl=train_control,
method="rpart")
nrow(model$pred)
# [1] 450
length(unique(model$pred$cp))
# [1] 3
Run Code Online (Sandbox Code Playgroud)
例如,您可以通过显式指定来更改它cp=0.05:
model <- train(Species ~ .,
data=iris,
trControl=train_control,
method="rpart",
tuneGrid = data.frame(cp = 0.05))
nrow(model$pred)
# [1] 150
length(unique(model$pred$cp))
# [1] 1
Run Code Online (Sandbox Code Playgroud)
或使用tuneLength=1代替默认值3:
model <- train(Species ~ .,
data=iris,
trControl=train_control,
method="rpart",
tuneLength = 1)
nrow(model$pred)
# [1] 150
length(unique(model$pred$cp))
# [1] 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1309 次 |
| 最近记录: |