0

我目前正在使用 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% 的数据?

谢谢

4

2 回答 2

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每次运行都会选择不同的随机种子,所以你会得到不同的订单。

于 2013-11-14T16:43:51.670 回答
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)
于 2017-12-13T15:48:52.977 回答