我是R的大一新生,想在R中执行randomForest,数据有1000行28列。这个想法是测试所有 mtry (1:27),每个 mtry 将通过 10 次重复 10 倍 CV 进行测试。问题是花了这么长时间还是没有结果!我尝试使用“foreach”循环而不是“for”,但我不知道该怎么做。代码如下所示:
library(randomForest)
n <- nrow(data)
a1 <- 1:n
a2 <- rep(1:10,ceiling(n/10))[1:n]
k <- ncol(data)-1
trainrf <- testrf <- list()
for(i in 1:k){ # tune mtry from 1 to 27
rftrain <- rftest <- NULL
for(x in 1:10){ # 10 repeats 10-fold CV
set.seed(1981)
a2 <- sample(a2,n)
train.rf <- test.rf <- rep(0,10)
for(j in 1:10){
m <- a1[a2 == j]
n1 <- n-length(m)
n2 <- length(m)
set.seed(2013)
rf.data <- randomForest(level~., data=data[-m,], mtry=i, ntree=1000)
train.rf[j] <- sum(data[-m,28] == predict(rf.data, data[-m,]))/n1
test.rf[j] <- sum(data[m,28] == predict(rf.data, data[m,]))/n2
}
rftrain[x] <- mean(train.rf); rftest[x] <- mean(test.rf)
}
trainrf[[i]] <- rftrain; testrf[[i]] <- rftest
}
我的笔记本电脑是 i7 Windows 7 64 位,据我所知,我写了一些代码:
library(foreach)
library(doParallel)
cl <- makeCluster(4)
registerDoParallel(cl)
请帮助我,非常感谢!