【发布时间】:2020-08-15 07:17:13
【问题描述】:
我测试了训练数据对分类准确性的影响。例如,我使用虹膜数据。我注意到我从 33 次迭代中获得了最佳精度。我想使用迭代中的训练集(iristrain)进行进一步分析。我不知道如何重现它。我不想每次迭代都保存训练集,因为它很大。我只想从 33 次迭代中得到这个集合。 我试过这个: clusterSetRNGStream() 然后我在一个循环中使用了相同的种子,它没有给出相同的结果
library(randomForest)
library(caret)
library(foreach)
library(doParallel)
results_overall <- data.frame()
cores = detectCores()
cl = makeCluster(cores - 1)
registerDoParallel(cl)
res <- foreach(i = 1:50, .packages = c("caret", "randomForest"), .combine = rbind) %dopar% {
trainIndex <- caret::createDataPartition(iris$Species, p = 0.5, list = FALSE)
irisTrain <- iris[ trainIndex,]
irisTest <- iris[-trainIndex,]
model <- randomForest(x = irisTrain[,c(1:4)], y = irisTrain[,5], importance = TRUE,
replace = TRUE, mtry = 4, ntree = 500, na.action=na.omit,
do.trace = 100, type = "classification")
pred_test <- predict(model, irisTest[,c(1:4)])
con.mat_test <- confusionMatrix(pred_test, irisTest[,5], mode ="everything")
results_overall <- rbind(results_overall, con.mat_test[["overall"]])
return(tibble::tribble(~iteration, ~overall,
i, results_overall))
}
stopCluster(cl)
【问题讨论】:
标签: r foreach parallel-processing r-caret doparallel