我在阅读插入符号包,看到了那个代码。
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 - 插入符包装和过度拟合中的数据分区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49192550/