如何从插入符号:: train的输出创建学习曲线(偏差/方差)

时间:2017-09-09 20:09:42

标签: r cross-validation r-caret rpart

我是插入库的新手。我想使用train函数对我的数据集运行交叉验证(使用rpart方法进行分类)。我的目标是使用从我的火车呼叫返回的数据生成学习曲线。学习曲线将在x轴上绘制数据集大小。将训练和交叉验证集上的预测误差绘制为数据集大小的函数。

我的问题是,插入符号是否对训练和cv折叠做出预测?如果答案是肯定的,我将如何提取数据呢?

假设答案是肯定的,这里有一个简单的代码示例,您可以附加说明:

library(MASS)
data(biopsy)
biopsy <- biopsy[, -1]
names(biopsy) <- c("thick", "u.size", "u.shape", "adhsn", "s.size", "nucl", "chrom", "n.nuc", "mit", "class")
biopsy.v2 <- na.omit(biopsy)
set.seed(1)
ind <- sample(2, nrow(biopsy.v2), replace = TRUE, prob = c(0.7, + 0.3))
biop.train <- biopsy.v2[ind == 1, ]
tr.model <- caret::train(class ~ ., data= biop.train, trControl = trainControl(method="cv", number=4, verboseIter = FALSE, savePredictions = "final"), method='rpart')
#Can I extract train and cv accuracies from tr.model?

感谢。

注意:我意识到我可能需要使用我的数据集的不同样本重复调用train(假设插入符号也不支持此操作),并且这不会反映在此处的代码示例中。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

包含每个重采样预测的数据框:

tr.model$pred

包含每个效果指标列的数据框。每行对应于每个重新采样:

tr.model$resample

包含最终参数的数据框:

tr.model$bestTune

具有训练错误率和调整参数值的数据框:

tr.model$results

指定重复的CV:

trainControl(..., repeats = n)

其中n是一个整数(要计算的完整折叠集的数量)

编辑:确定测试折叠中的哪些重新采样:

相关信息在tr.model $ pred数据框中:

tr.model$pred[tr.model$pred$Resample=="Fold1",4:5]
tr.model$pred[tr.model$pred$Resample=="Fold2",4:5]
tr.model$pred[tr.model$pred$Resample=="Fold3",4:5]
tr.model$pred[tr.model$pred$Resample=="Fold4",4:5]

那些不在测试折叠中的人是在训练折叠中