如何使用第一个70作为训练矩阵将我的数据集分割为矩阵,并将30作为测试矩阵?

问题描述:

我是R的新手,所以我不完全确定如何做到以下几点。我想将我的数据集分成矩阵,使用前69个作为训练矩阵,最后30个作为测试矩阵。如何使用第一个70作为训练矩阵将我的数据集分割为矩阵,并将30作为测试矩阵?

我有这样的:

dim(iris) # 99 5 

#Sample Indexes 
indexes = sample(1:nrow(iris), size=0.7*nrow(iris)) 

#Split data 
train = iris[indexes,] 
test = iris[-indexes,] 

rm(indexes) 

train.X <- matrix(train, nrow = 69, ncol = 5, byrow = FALSE, dimnames = NULL) 

test.X <- matrix(test, nrow = 30, ncol = 5, byrow = FALSE, dimnames = NULL) 

但矩阵充满了 '数字,69'

+1

应该有'test = iris [-indexes,]'。 – Glaud

您可以使用as.matrix()直接向data.frame()转换成一个矩阵:

train.X <- as.matrix(iris[indexes, -5]) 
test.X <- as.matrix(iris[-indexes, -5]) 

但您可能需要查看?model.matrix以将data.frame转换为matrix以进行建模用途:

mat <- model.matrix(Species ~ -1 + ., data = iris) 
train.X <- mat[indexes, ] 
test.X <- mat[-indexes, ] 
+0

谢谢,这个作品就像一个魅力。我将如何去做相同的70/30分割,而不是矩阵的矢量? –

+0

您可以使用'sample(c(0,1),nrow(iris),replace = TRUE,prob = c(0.3,0.7))'自己编写它,但是您还可以利用插入程序包中的功能: https://topepo.github.io/caret/data-splitting.html –