나는 mlr을 사용하여 텍스트 분류 작업을 수행합니다.mlr의 사용자 정의 필터와 함께 parallelMap 패키지 사용
Exporting objects to slaves for mode socket: .mlr.slave.options
Mapping in parallel: mode = socket; cpus = 4; elements = 2.
Error in stopWithJobErrorMessages(inds, vcapply(result.list[inds], as.character)) :
Errors occurred in 2 slave jobs, displaying at most 10 of them:
00001: Error in parallel:::.slaveRSOCK() :
Assertion on 'method' failed: Must be element of set {'anova.test','carscore','cforest.importance','chi.squared','gain.ratio','information.gain','kruskal.test','linear.correlation','mrmr','oneR','permutation.importance','randomForest.importance','randomForestSRC.rfsrc','randomForestSRC.var.select','rank.correlation','relief','rf.importance','rf.min.depth','symmetrical.uncertainty','univariate','univariate.model.score','variance'}.
내가로부터 있으리라 믿고있어 : 의도 한대로
이 필터는, 그러나 나는 시도하고 나는 다음과 같은 오류가 발생 parallelization을 ustilise 작품 때 여기에 설명 된 바와 같이 나는 사용자 정의 필터를 작성했습니다 내 사용자 지정 필터가 집합에서 병렬로 작업 할 수있는 기회가 될 필요가 있지만 (a) 가능한 경우와 (b) 그렇다면 어떻게 작동합니까? 그것에 대해 가라. 사전에 어떤 도움감사합니다, 아잠
이 가이 추가 된 : 테스트 스크립트가 난 당신이 내가 민감도로 인해 함께 일하고 있어요 실제 스크립트/데이터를 볼 수 있도록 할 수는 없지만이 예는 재현 오류가 나타납니다. 맞춤 기능 선택 및 데이터 세트 외에도 학습자를 설정하고 평가하는 단계는 내 '실제'스크립트에있는 것과 같습니다. 내 실제 사례에서와 같이 parallelStartSocket() 명령을 제거하면 스크립트가 예상대로 실행됩니다.
RBF 커널을 사용하여 SVM의 하이퍼 매개 변수를 조정할 때 병렬 처리를 성공적으로 사용했는지 (또는 적어도 오류가 없는지) 추가해야합니다. 스크립트는 makeParamSet() 정의와 별개로 동일합니다.
library(parallelMap)
library(mlr)
library(kernlab)
makeFilter(
name = "nonsense.filter",
desc = "Calculates scores according to alphabetical order of features",
pkg = "mlr",
supported.tasks = c("classif", "regr", "surv"),
supported.features = c("numerics", "factors", "ordered"),
fun = function(task, nselect, decreasing = TRUE, ...) {
feats = getTaskFeatureNames(task)
imp = order(feats, decreasing = decreasing)
names(imp) = feats
imp
}
)
# set up svm with rbf kernal
svm.lrn <- makeLearner("classif.ksvm",predict.type = "response")
# wrap learner with filter
svm.lrn <- makeFilterWrapper(svm.lrn, fw.method = "nonsense.filter")
# define feature selection parameters
ps.svm = makeParamSet(
makeDiscreteParam("fw.abs", values = seq(2, 3, 1))
)
# define inner search and evaluation strategy
ctrl.svm = makeTuneControlGrid()
inner.svm = makeResampleDesc("CV", iters = 5, stratify = TRUE)
svm.lrn <- makeTuneWrapper(svm.lrn, resampling = inner.svm, par.set = ps.svm,
control = ctrl.svm)
# set up outer resampling
outer.svm <- makeResampleDesc("CV", iters = 10, stratify = TRUE)
# run it...
parallelStartSocket(2)
run.svm <- resample(svm.lrn, iris.task,
resampling = outer.svm, extract = getTuneResult)
parallelStop()
이 문제를하시기 바랍니다 재현 할 수있는 완전한 예제를 제공 할 수 있을까요? –
@LarsKotthoff, 원본 게시물에 예제 스크립트가 추가되었습니다. 고마워요, Azam –