将数据拆分为两个培训和一个测试集

时间:2018-02-10 18:41:50

标签: r testing split training-data

我们如何使用R?

将数据分成两个训练集和一个测试集

我尝试了这个,但我想将火车分成两组:

set.seed(770)
sample <- sample.int(n = nrow(datazoo), size = floor(0.75*nrow(datazoo)), replace = F)
train <- datazoo[sample, ]
test  <- datazoo[-sample, ]

由于

1 个答案:

答案 0 :(得分:0)

这是虹膜数据的一种方法,它有150行

data(iris)

来自所有行索引的第一列火车的样本:

t1 <- sample(1:nrow(iris), size = floor(0.4 * nrow(iris)))

来自未在t1中采样的行索引的第二列火车的样本:

t2 <- sample(setdiff(1:nrow(iris), t1), size = floor(0.4 * nrow(iris)))

剩下的一切都在t3中:

t3 <- setdiff(1:nrow(iris), c(t1,t2))

是真的吗:

any(t1 %in% t2)
any(t1 %in% t3)
any(t2 %in% t3)

或者您可以使用

library(caret)

将数据拆分为一列火车和测试集

t1 <- createDataPartition(iris$Species, p = 0.8)

将t1列车组分成两组:

t2 <- createDataPartition(iris$Species[t1$Resample1], p = 0.5)

t3 <- setdiff(t1, t2)

定义测试集:

t4 <- setdiff(1:nrow(iris), c(t2, t3))

第二种方法是首选方法,因为如果基于因子变量进行分割,则createDataPartition进行分层分割,如果给出数字变量,则基于百分位进行分割。