在R中创建培训和测试数据集

在R中创建培训和测试数据集,r,subset,training-data,R,Subset,Training Data,我想从mydata中创建训练和测试数据,它有2673个观察值和23个变量。然而,我不能仅仅通过减去训练数据来创建测试集 dim(mydata) ## [1] 2673 23 set.seed(1) train = mydata[sample(1:nrow(mydata), 1000, replace=FALSE), ] dim(train) ## [1] 1000 23 运行以下命令时,我收到19条警告,结果有20062条观察结果: test = mydata[!train, ] ##

我想从
mydata
中创建训练和测试数据,它有2673个观察值和23个变量。然而,我不能仅仅通过减去训练数据来创建测试集

dim(mydata)
## [1] 2673   23
set.seed(1)
train = mydata[sample(1:nrow(mydata), 1000, replace=FALSE), ]
dim(train)
## [1] 1000   23
运行以下命令时,我收到19条警告,结果有20062条观察结果:

test = mydata[!train, ]
## There were 19 warnings (use warnings() to see them)
dim(test)
## [1] 20062    23

我做错了什么?

一个可能的解决方案是将采样的索引存储在一个单独的命名向量中

train_idx <- sample(1:nrow(mydata),1000,replace=FALSE)
train <- mydata[train_idx,] # select all these rows
test <- mydata[-train_idx,] # select all but these rows

但是第二种解决方案在
mydata上慢了2倍。一种可能的解决方案是将采样的索引存储在一个单独的命名向量中

train_idx <- sample(1:nrow(mydata),1000,replace=FALSE)
train <- mydata[train_idx,] # select all these rows
test <- mydata[-train_idx,] # select all but these rows

但是第二个解决方案在
mydata上慢了2倍,谢谢!在创建
train\u idx
之前,我仍然需要设置种子。是否正确?如果希望获得可复制的结果,请在
sample()之前调用
set.seed(一些编号)
。如果这对你不重要,保持种子不变(它是根据系统时间+一些其他信息自动设置的)。谢谢!在创建
train\u idx
之前,我仍然需要设置种子。是否正确?如果希望获得可复制的结果,请在
sample()之前调用
set.seed(一些编号)
。如果这对您不重要,请保持种子不变(它会根据系统时间+一些其他信息自动设置)。此处相关