如何使用第一个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'
您可以使用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, ]
谢谢,这个作品就像一个魅力。我将如何去做相同的70/30分割,而不是矩阵的矢量? –
您可以使用'sample(c(0,1),nrow(iris),replace = TRUE,prob = c(0.3,0.7))'自己编写它,但是您还可以利用插入程序包中的功能: https://topepo.github.io/caret/data-splitting.html –
应该有'test = iris [-indexes,]'。 – Glaud