R - 并行化多个模型学习(使用 dplyr 和 purrr)

标签 r parallel-processing dplyr purrr

这是对 previous question 的跟进关于学习多个模型。

用例是我对每个主题都有多个观察结果,并且
我想为他们每个人训练一个模型。见哈德利的 excellent presentation关于如何做到这一点。

简而言之,这可以使用 dplyr 来完成。和 purrr像这样:

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

因此,由于模型构建是一项令人尴尬的并行任务,因此我
想知道是否dplyr , purrr为此类任务提供易于使用的并行化机制(如并行 map)。

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

最佳答案

只需在此处添加完整的答案,您将需要安装 multidplyr从 Hadley 的 repo 运行这个,更多信息在 vignette :

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)

关于R - 并行化多个模型学习(使用 dplyr 和 purrr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38252013/

相关文章:

matlab - 尝试在 MATLAB 中使用 parfor(并行 for 循环)时出错

r - 使用 dplyr 为每个组申请

r - 总结使用 dplyr 给出错误的结果

r - 如何向仅修改某些列的数据框添加一行

c#-4.0 - 如何处理数据库连接的并行执行 C#

c# - 从另一个线程更新 ObservableCollection 的最佳方法是什么?

r - 使用不同的调用方案按列对数据帧进行排序

r - 通过 R 中的数据子集执行计算

r - 需要对 Shiny 中的多个输出使用相同的输入

python - 绘制 Matplotlib 中的缺陷