MISE À JOUR: caret utilise désormais en foreachinterne, donc cette question n'est plus vraiment pertinente. Si vous pouvez enregistrer un backend parallèle fonctionnel foreach, caret l'utilisera.
J'ai le package caret pour R, et je suis intéressé par l'utilisation de la trainfonction pour effectuer une validation croisée de mes modèles. Cependant, je veux accélérer les choses, et il semble que caret prenne en charge le traitement parallèle. Quelle est la meilleure façon d'accéder à cette fonctionnalité sur une machine Windows? J'ai le paquet doSMP , mais je ne sais pas comment traduire la foreachfonction en lapplyfonction, donc je peux la transmettre à la trainfonction.
Voici un exemple de ce que je veux faire, à partir de la traindocumentation: C'est exactement ce que je veux faire, mais en utilisant le doSMPpackage, plutôt que le doMPIpackage.
## A function to emulate lapply in parallel
mpiCalcs <- function(X, FUN, ...)
}
theDots <- list(...)
parLapply(theDots$cl, X, FUN)
{
library(snow)
cl <- makeCluster(5, "MPI")
## 50 bootstrap models distributed across 5 workers
mpiControl <- trainControl(workers = 5,
number = 50,
computeFunction = mpiCalcs,
computeArgs = list(cl = cl))
set.seed(1)
usingMPI <- train(medv ~ .,
data = BostonHousing,
"glmboost",
trControl = mpiControl)
Voici une version de la fonction de mbq qui utilise les mêmes noms de variables que la documentation lapply:
felapply <- function(X, FUN, ...) {
foreach(i=X) %dopar% {
FUN(i, ...)
}
}
x <- felapply(seq(1,10), sqrt)
y <- lapply(seq(1,10), sqrt)
all.equal(x,y)