我正在使用R和python(Anaconda)。当涉及到建模时,R花费更多时间进行相同的操作。在R中是否存在任何并行操作或多线程的方法?
答案 0 :(得分:1)
在R中使用机器学习算法时,可以调用一些允许并行化的库。在下面的例子中,差异很大。
您可以这样称呼它们(注意'2'取决于您的群集数量):
library(doParallel)
cl <- makeCluster(2)
registerDoParallel(cl)
此示例摘自https://cran.r-project.org/web/packages/doParallel/vignettes/gettingstartedParallel.pdf
> x <- iris[which(iris[,5] != "setosa"), c(1,5)]
> trials <- 10000
> ptime <- system.time({
+ r <- foreach(icount(trials), .combine=cbind) %dopar% {
+ ind <- sample(100, 100, replace=TRUE)
+ result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
+ coefficients(result1)
+ }
+ })[3]
> ptime
并且比
快得多> stime <- system.time({
+ r <- foreach(icount(trials), .combine=cbind) %do% {
+ ind <- sample(100, 100, replace=TRUE)
+ result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
+ coefficients(result1)
+ }
+ })[3]
> stime