Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从caret::train的输出创建学习曲线(偏差/方差)_R_Cross Validation_R Caret_Rpart - Fatal编程技术网

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

如何从caret::train的输出创建学习曲线(偏差/方差),r,cross-validation,r-caret,rpart,R,Cross Validation,R Caret,Rpart,我是新来的插入符号库。我想使用train函数在我的数据集上运行交叉验证(使用rpart方法进行分类)。我的目标是使用调用train返回的数据生成学习曲线。学习曲线将在x轴上绘制数据集大小。训练集和交叉验证集上的预测误差将绘制为数据集大小的函数 我的问题是,caret是否对训练和cv褶皱都做出预测?如果答案是肯定的,我将如何提取这些数据 假设答案是肯定的,下面是一个简单的代码示例,您可以附加它来说明: library(MASS) data(biopsy) biopsy <- biopsy[,

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

我的问题是,caret是否对训练和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?
库(MASS)
数据(活组织检查)
活检您可以尝试以下方法:

具有每次重采样预测的数据帧:

tr.model$pred
tr.model$resample
每个性能指标都有列的数据框。每行对应于每个重采样:

tr.model$pred
tr.model$resample
具有最终参数的数据帧:

tr.model$bestTune
tr.model$results
具有训练错误率和调谐参数值的数据帧:

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]
不在测试折叠中的那些在训练折叠中

您可以尝试以下方法:

具有每次重采样预测的数据帧:

tr.model$pred
tr.model$resample
每个性能指标都有列的数据框。每行对应于每个重采样:

tr.model$pred
tr.model$resample
具有最终参数的数据帧:

tr.model$bestTune
tr.model$results
具有训练错误率和调谐参数值的数据帧:

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]

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

感谢对这个@missue的反馈。作为跟进,您知道我如何确定哪些重采样是在训练折叠与交叉验证折叠中(如果这是明显的,请道歉)?很高兴提供帮助。选中EDIT.OK,使tr.model$pred$Resample包含测试折叠结果(感谢您的确认)。我在哪里可以找到训练折叠结果?请不要引用我的话,但我非常确定它们不会存储在trainControl结果中,因为超参数选择是基于测试结果的。但是,您可以将数据子集(删除每个测试折叠)。类似于Fold1:
biop.train[tr.model$pred$rowIndex[tr.model$pred$Resample!=“Fold1”],]
并运行
trainControl(method=“none”)
。感谢您对这个@missue的反馈。作为跟进,您知道我如何确定哪些重采样是在训练折叠与交叉验证折叠中(如果这是明显的,请道歉)?很高兴提供帮助。选中EDIT.OK,使tr.model$pred$Resample包含测试折叠结果(感谢您的确认)。我在哪里可以找到训练折叠结果?请不要引用我的话,但我非常确定它们不会存储在trainControl结果中,因为超参数选择是基于测试结果的。但是,您可以将数据子集(删除每个测试折叠)。类似于Fold1:
biop.train[tr.model$pred$rowIndex[tr.model$pred$Resample!=“Fold1”],]
并运行
trainControl(method=“none”)