私は R の新入生です。R で randomForest を実行したいのですが、データは 1000 行 28 列です。アイデアは、すべての mtry (1:27) をテストすることであり、それらのそれぞれは、10 倍の CV を 10 回繰り返すことによってテストされます。問題は、非常に長い時間がかかり、それでも結果が得られないことです! 「for」の代わりに「foreach」ループを使用しようとしていますが、その方法がわかりません。コードを以下に示します。
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)
助けてください、どうもありがとう!