我是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