Я запускаю пошаговую регрессию в R, чтобы выбрать модель наилучшего соответствия и сохраняю в * rds, мой код прикреплен здесь:
if (modeling_method == 'LinearRegression'){
n_cores <- detectCores() - 1
cl = makeCluster(n_cores, outfile = "")
registerDoParallel(cl)
z <- Sys.time()
modeling <- foreach(ii = 1:length(Medium_model), .multicombine = TRUE) %dopar% {
modeling_ <- list()
null_ <- list()
full_ <- list()
scope <- list()
train_ <- Medium_model[[ii]][,1:((dim(Medium_model[[ii]])[2]-1))]
names(train_) <- c(names(Medium_model[[ii]])[1:(length(names(Medium_model[[ii]]))-2)], 'y')
if (Label_type == 'regression'){
null_[[ii]] <- lm(y ~ 1, data = train_)
full_[[ii]] <- lm(y ~ ., data = train_)
} else if (Label_type == 'classification'){
null_[[ii]] <- glm(y ~ 1, data = train_, family = binomial(link = "logit"))
full_[[ii]] <- glm(y ~ ., data = train_, family = binomial(link = "logit"))
}
modeling_[[ii]] <- step(null_[[ii]],
scope=list(lower=null_[[ii]], upper=full_[[ii]]),
direction="both")
names(modeling_)[[ii]] = names(Medium_model)[[ii]]
saveRDS(modeling_[[ii]], file = paste0(model.path,names(Medium_model)[[ii]],".rds"))
}
Я хочу сделать параллелизм функцией foreach, когда я смещаю% do% с% dopar%, размер пошаговой регрессионной модели (* .rds) больше исходного.
modeling <- foreach(ii = 1:length(Medium_model), .multicombine = TRUE) %dopar% {
Сохранение модели выглядит следующим образом:
saveRDS(modeling_[[ii]], file = paste0(model.path,names(Medium_model)[[ii]],".rds"))
Вопрос Разве не разрешено, чтобы функция step () делала параллелизм? Почему размер модели * .rds будет больше, когда я использую% dopar% вместо% do%?
фотография оригинального размера модели
фотография большего размера модели