큰 데이터 세트 (636,688 행 × 7 열)에서 k- 평균을 수행 중이므로 병렬 처리가 필요합니다. 센터의 수를 반복하고 2 ~ 5 개의 센터를 2 번 반복하는 예제를 포함하고 싶습니다.병렬 패키지의 clusterMap - 여러 매개 변수를 반복합니다.
# Iris k-means parallelization example
library(parallel)
data(iris)
iris.cluster <- iris[,-5]
cl <- makeCluster(detectCores())
worker <- function(data, nclus, nstarts){
kmeans(x = data, centers = nclus, nstart = nstarts)
}
myiter <- 2
nstarts <- rep(25, myiter)
nclus <- 2:5
results <- clusterMap(cl, worker, data = iris.cluster, nclus = nclus, nstarts = nstarts)
stopCluster(cl)
요약이 이미 나에게 뭔가를 알려줍니다은 살짝 밟아입니다 :
> summary(results)
Length Class Mode
Sepal.Length 9 kmeans list
Sepal.Width 9 kmeans list
Petal.Length 9 kmeans list
Petal.Width 9 kmeans list
results
8 행과 Length
의 왼쪽에 어떤 설명을 실제로 있어야합니다. 마치 하나의리스트 엔트리 당 하나의 변수만을 사용하는 것처럼 보입니다. 불행히도 clusterMap
에 대해 명확히 밝혀지지 않았으며이 경우에 올바른 방법인지 여부는 확실하지 않습니다. 이제 씨앗과 nstart
값 (스티브 웨스턴 감사합니다) 이상 반복하지만 위에서 설명한대로 클러스터의 수를 반복하는 데 도움이 필요 알아요.
먼저 iris.cluster를 반복하지 않아야하므로 데이터 인수를 다르게 지정해야합니다. 둘째, 지금은 2 차원 문제가있는 것 같지만 잘못 지정하고 있습니다. 먼저 코드의 순차적 인 버전을 해결하는 것이 도움이 될 수 있습니다. –
만약'clusterMap'에서'iris.cluster'를 꺼내려고한다면 - 이미 정의되어 있습니다 -'cl <- makeCluster (detectCores()) worker <- function (nclus, nstarts) { kmeans (x) = iris.cluster, 센터 = nclus, n 다음 = nstarts) } myiter <- 2 nstarts <- 렙 (25 myiter) nclus <- 2 : 5 개 결과 <- clusterMap (CL, 작업자 nclus = nclus , nstarts = nstarts) stopCluster (cl)', 다음 오류가 발생합니다 :'checkForRemoteErrors (val)의 오류 : 4 개 노드에서 오류가 발생했습니다. 첫 번째 오류 : 개체 'iris.cluster'을 (를) 찾을 수 없습니다. 감사! –
작업자 함수에는 "iris.cluster"가 필요하지만 반복 변수로 전달하면 안됩니다. 그렇지 않으면 분할됩니다. clusterExport를 통해 작업자로 내보내기하거나 clusterMap MoreArgs 인수를 사용하여 전달하십시오. –