5
我試圖在Windows機器上並行運行predict()
。這適用於較小的數據集,但不能很好地擴展,因爲每個進程都會創建新的數據框副本。有沒有辦法在沒有臨時拷貝的情況下平行運行?並行預測
我的代碼(只有少數的this原代碼的修改):
library(foreach)
library(doSNOW)
fit <- lm(Employed ~ ., data = longley)
scale <- 100
longley2 <- (longley[rep(seq(nrow(longley)), scale), ])
num_splits <-4
cl <- makeCluster(num_splits)
registerDoSNOW(cl)
split_testing<-sort(rank(1:nrow(longley))%%num_splits)
predictions<-foreach(i= unique(split_testing),
.combine = c, .packages=c("stats")) %dopar% {
predict(fit, newdata=longley2[split_testing == i, ])
}
stopCluster(cl)
我使用簡單的數據複製來測試它。與scale
10或1000它是工作,但我想使它運行與scale <- 1000000
- 數據幀與16M行(1.86GB數據幀由object_size()
從pryr
指示。注意,如有必要,我也可以使用Linux機器,如果這是唯一的選擇