首页 > 解决方案 > R:为什么负索引不能创建补集?

问题描述

我正在尝试创建训练、验证和测试数据集。(在我将数据框过滤到适当的数据集之前,我正在尝试使用每个数据集将包含的行列表创建向量。
有 654 个观察值,我打算将 354 个放在训练中,200 个验证,100 个测试.这是我使用的代码:

x <- 1:654
train_ind <- sample(x, 354)
rest <- x[-train_ind]
length(rest)
[1] 300
valid <- sample(rest, 200)
length(valid)
[1] 200
test <- rest[-valid]
length(test)
[1] 210

我不明白为什么test对象是210!
我认为因为valid只有长度 200,如果我取rest(300) 和负索引valid,那么我将只剩下 100。
我感谢任何输入我做错了什么。
谢谢

标签: rindexingsubset

解决方案


您可以只打乱索引(无需替换的采样),然后获取前几个用于测试和其他用于训练。

indices <- sample(seq(20))
test <- indices[1:10]
train <- indices[11:20]

train
#>  [1] 10  8 12  1  7 20 13 18  4 11
test
#>  [1] 19  3 15  2  6  9 16 14 17  5

reprex 包(v2.0.0)于 2021-09-09 创建


推荐阅读