16

这是上一个关于学习多个模型的问题的后续。

用例是我对每个主题都有多个观察结果,我想为每个主题训练一个模型。请参阅 Hadley关于如何执行此操作的出色演示。

简而言之,这是可以使用的dplyrpurrr就像这样:

library(purrr)
library(dplyr)
library(fitdistrplus)
dt %>% 
    split(dt$subject_id) %>%
    map( ~ fitdist(.$observation, "norm")) 

因此,由于模型构建是一个令人尴尬的并行任务,我想知道是否dplyrpurrr一个易于使用的并行化机制来处理此类任务(如并行map)。

如果这些库不提供简单的并行化,是否可以使用经典的 R 并行化库(parallelforeach)来完成?

4

2 回答 2

13

只需在此处添加完整性答案,您将需要从 Hadley 的 repo 安装multidplyr来运行它,更多信息在小插图中:

library(dplyr)
library(multidplyr)
library(purrr)

cluster <- create_cluster(4)
set_default_cluster(cluster)
cluster_library(cluster, "fitdistrplus")

# dt is a dataframe, subject_id identifies observations from each subject
by_subject <- partition(dt, subject_id)

fits <- by_subject %>% 
    do(fit = fitdist(.$observation, "norm")))

collected_fits <- collect(fits)$fit
collected_summaries <- collected_fits %>% map(summary)
于 2016-10-13T11:00:55.340 回答
11

现在有furrr包,例如:

library(dplyr)
library(furrr)
plan(multiprocess)

dt %>% 
    split(dt$subject_id) %>%
    future_map(~fitdist(.$observation, "norm"))
于 2018-05-23T08:31:04.660 回答