我正在尝试构建一些机器学习模型,
所以我需要一个训练数据和一个验证数据
所以假设我有N个例子,我想在数据框中选择随机x个例子。
例如,假设我有100个例子,我需要10个随机数,是否有办法(有效地)生成10个随机INTEGER数字,以便从我的样本数据中提取训练数据?
我尝试使用while循环,并慢慢更改重复的数字,但运行时间不是很理想,所以我正在寻找一种更有效的方法来实现它。
有人可以帮忙吗?
答案 0 :(得分:29)
sample
(或sample.int
)执行此操作:
sample.int(100, 10)
# [1] 58 83 54 68 53 4 71 11 75 90
将从1-100范围内生成10个随机数。您可能需要replace = TRUE
,其中包含替换样本:
sample.int(20, 10, replace = TRUE)
# [1] 10 2 11 13 9 9 3 13 3 17
更一般地说,sample
从任意值的矢量中观察n
个观测值。
答案 1 :(得分:1)
如果我理解正确,您正在尝试创建一个保留采样。这通常使用概率来完成。因此,如果您有n.rows
个样本,并希望将一小部分training.fraction
用于培训,您可以执行以下操作:
select.training <- runif(n=n.rows) < training.fraction
data.training <- my.data[select.training, ]
data.testing <- my.data[!select.training, ]
如果您想指定训练案例的确切数量,您可以执行以下操作:
indices.training <- sample(x=seq(n.rows), size=training.size, replace=FALSE) #replace=FALSE makes sure the indices are unique
data.training <- my.data[indices.training, ]
data.testing <- my.data[-indices.training, ] #note that index negation means "take everything except for those"
答案 2 :(得分:0)
来自raster
包:
raster::sampleInt(242, 10, replace = FALSE)
## 95 230 148 183 38 98 137 110 188 39
如果限制太大,可能会失败:
sample.int(1e+12, 10)