我是R的新生。我想在R中执行randomForest,数据有1000行和28列。这个想法是测试所有的测试(1:27),每个测试10次重复测试10次。问题是需要这么长时间,仍然没有结果!我尝试使用'foreach'循环而不是'for',但我不知道如何去做。代码如下所示:foreach而不是FOR IN R
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)
请帮助我,非常感谢!
对不起,你的例子似乎并没有使用foreach,所以我不知道该纠正什么。此外ntree = 1000是相当大的,可能为什么你看到如此长的延迟。你有没有尝试从较小的森林开始? –
如果你不知道如何做,你应该阅读一些小插曲。 – Roland