如何分割数据70:30并在每次拆分时获得不同的数据范围

时间:2013-11-14 16:35:32

标签: r random-forest data-partitioning

我目前正在使用R通过使用随机森林回归来进行特征选择。我想将数据分成70:30,这很容易。但是,我希望能够这样做10次,每次10次,从之前获得一组不同的例子。

> trainIndex<- createDataPartition(lipids$RT..seconds., p=0.7, list=F)
> lipids.train <- lipids[trainIndex, ]
> lipids.test <- lipids[-trainIndex, ]

这就是我现在正在做的事情,它可以很好地将我的数据分成70:30。但是当我再次这样做时,我在训练集中获得相同的70%的数据,并且在我的测试数据中获得相同的30%的数据。我知道这就是createDataPartition的工作方式,但有没有办法让我在下次执行时得到不同的70%的数据呢?

由于

2 个答案:

答案 0 :(得分:2)

将来,请包含您使用的套餐,因为createDataPartition不在基础R中。我假设您正在使用caret套餐。如果这是正确的,你找到了times参数吗?

trainIndex<- createDataPartition(lipids$RT..seconds., p=0.7, list=F, times=10)

如评论中所述,您只需使用sample

即可
sample(seq_along(lipids$RD..seconds), as.integer(0.7 * nrow(lipids)))

sample每次运行时都会选择不同的随机种子,因此您将获得不同的订单。

答案 1 :(得分:0)

library(dplyr)
n <- as.integer(length(data[,1])*0.7)
data_70 <- data[sample(nrow(data),n), ]
data_30 <- anti_join(data, data_70)