2012-09-26 4 views
0

너무 열심히 할 수 없다고 생각합니다. 나는 hclust()cutree()을 안다. 그러나 그것으로부터 떨어진 거리가 주어진 반경보다 큰 중심 좌표를 얻는 방법은 무엇인가? 나는 중심선의 범위 내의 점들이 이미 범위 내에 있지 않은 중심에 속할 수 있다는 것을 압니다. 나는 그것으로 멋지다. dclust의 높이를 주문하지 않는 한주어진 반지름 내에서 점 R을 중심으로 합치는 것

set.seed(1) 
data <- matrix(runif(100),ncol=2) 
plot(data) 
dclust <- hclust(dist(data),method="centroid") 
cutree(dclust,h=0.1) 

cutree(...,h=0.1) 이미 실패합니다.

+0

이것은 계층 적 클러스터링보다는 k-means 클러스터링과 비슷합니다. 점에서 클러스터의 중심까지의 최악 거리가 선택한 반경 내에있을 때까지 점진적으로 k를 증가시킬 수 있습니다. – flodel

+1

당신이하려는 일에 대해 좀 더 구체적으로 밝혀야합니다. kmeans() 함수는 아마도 원하는 것일 수 있지만, 중심으로부터의 위치 (및 중심의 수)는 데이터로부터 나온 것입니까, 아니면 데이터로부터 독립적입니까? 관측치가 클러스터와 일치하지 않을 수 있습니까? 중심 (클러스터)을 항상 추가 할 수 있다면 0을 포함하여 원하는 최악 거리를 설정할 수 있습니다! 또한 kmeans()는 처음에 중심을 제공하지 않으면 고유 한 결과를 제공하지 않습니다. 중심에서 데이터가 나온다면 여러 가지 해결책이있을 수 있습니다. – dcarlson

+0

관측에 대해 이야기하지 않겠습니다. 두 개 이상의 거리가 서로 만나는 노드의 좌표와 OpenStreetMap의 데이터가 있습니다. 가까운 거리에있는 위에서 언급 한 많은 노드들을 가진 교차점 (우리가 인간들이 보았 듯이)이 있기 때문에 (예를 들어, 다른 노드를 만나는 차선을 분리하는 거리를 상상해 보라) 나는 시각화를위한 노드를 나타내는 포인트를 원한다. –

답변

0

25 개의 그룹으로 데이터를 사용하고 kmeans를 실행하면 다음과 같은 결과가 생성됩니다. 이게 너가하는거야?

Example <- kmeans(data, 25) 
plot(data, type="n") 
text(Example$centers, unlist(dimnames(Example$centers)), col="red") 
text(data, as.character(Example$cluster), cex=.75) 
cdist <- sqrt((data[,1] - Example$centers[Example$cluster, 1])^2 + 
    (data[, 2] - Example$centers[Example$cluster, 2])^2) 
names(cdist) <- 1:50 
cdist 

마지막 세 줄은 할당 된 중심에 각 점의 거리를 계산하여 표시합니다.

관련 문제