我目前正在使用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%的数据呢?
由于
答案 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)