我正在阅读插入符包,并且看到了该代码;
createDataPartition(y, times = 1, p = 0.5, list = TRUE, groups = min(5,
length(y)))
我想知道“时代”的表达方式。所以,如果我使用这段代码,
inTrain2 <- createDataPartition(y = MyData$Class ,times=3, p = .70,list = FALSE)
training2 <- MyData[ inTrain2,] # ≈ %67 (train)
testing2<- MydData[-inTrain2[2],] # ≈ %33 (test)
这会是过度拟合问题的原因吗?或者是用于某种重采样方法(无偏)?
提前非常感谢。
编辑:
我想提一下,如果我使用此代码;
inTrain2 <- createDataPartition(y = MyData$Class ,times=1, p = .70,list = FALSE)
training2<- MyData[ inTrain2,] #142 samples # ≈ %67 (train)
testing2<- MydData[-inTrain2,] #69 samples # ≈ %33 (test)
我将得到 211 个样本,并且准确率 ≈ %52,另一方面,如果我使用此代码;
inTrain2 <- createDataPartition(y = MyData$Class ,times=3,p =.70,list = FALSE)
training2<- MyData[ inTrain2,] # ≈ %67 (train) # 426 samples
testing2<- MydData[-inTrain2[2],] # ≈ %33 (test) # 210 samples
我将获得 536 个样本,并且准确率 ≈ %98。
谢谢。
最佳答案
不清楚为什么你在这个问题中混合了过度拟合; times
只是指您想要多少个不同的分区 ( docs )。让我们看一个包含 iris
数据的示例:
library(caret)
data(iris)
ind1 <- createDataPartition(iris$Species, times=1, list=FALSE)
ind2 <- createDataPartition(iris$Species, times=2, list=FALSE)
nrow(ind1)
# 75
nrow(ind2)
# 75
head(ind1)
Resample1
[1,] 1
[2,] 5
[3,] 7
[4,] 11
[5,] 12
[6,] 18
head(ind2)
Resample1 Resample2
[1,] 2 1
[2,] 3 4
[3,] 6 6
[4,] 7 9
[5,] 8 10
[6,] 11 11
两个索引的长度均为 75(因为我们使用了默认参数 p=0.5
,即初始数据集的一半行)。 ind2
的列(不同样本)之间是独立的,并且保留了不同 iris$Species
的类比,例如:
length(which(iris$Species[ind2[,1]]=='setosa'))
# 25
length(which(iris$Species[ind2[,2]]=='setosa'))
# 25
关于r - Caret包中的数据分区和过拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49192550/