在插入符中:创建多个不同大小的分区以进行测试/培训/验证

LRG*_*LRG 4 r data-partitioning r-caret

我正在尝试获取一个数据集并将其划分为3个部分:训练:60%,测试:20%,验证:20%。

part1 <- createDataPartition(fullDataSet$classe, p=0.8, list=FALSE)
validation <- fullDataSet[-part1,]
workingSet <- fullDataSet[part1,]
Run Code Online (Sandbox Code Playgroud)

当我做同样的事情再次分区时:

inTrain <- createDataPartition(workingSet$classe, p=.75, list=FALSE)
Run Code Online (Sandbox Code Playgroud)

我得到错误:

Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
Run Code Online (Sandbox Code Playgroud)

有没有一种方法要么a)创建3个不同大小的分区,要么b)像我尝试做的那样嵌套一个分区?我考虑过c)使用sample()代替,但这是针对讲师仅使用createDataPartition的类,并且我们必须显示代码。有人在这里有什么建议吗?

Fab*_*dez 5

实际上,我在想同样的事情,并且想出了一个非常非优雅的解决方案,但这似乎可行。

因此,就我而言,我想创建一个包含60%数据的训练数据集,以及每个包含20%的测试和验证数据集。这是我的操作方法:

set.seed(1234)
inTraining <- createDataPartition(mydata$FLAG, p=0.6, list=FALSE)
training.set <- mydata[inTraining,]
Totalvalidation.set <- mydata[-inTraining,]
# This will create another partition of the 40% of the data, so 20%-testing and 20%-validation
inValidation <- createDataPartition(Totalvalidation.set$FLAG, p=0.5, list=FALSE)
testing.set <- Totalvalidation.set[inValidation,]
validation.set <- Totalvalidation.set[-inValidation,]
Run Code Online (Sandbox Code Playgroud)

看起来它为我提供了正确的数据集,并将在今天对其进行测试。希望它对您有用,如果其他人有更优雅的答案,请分享!:)