scikit-learn에서 AgglomerativeClustering을 사용하여 장소의 클러스터 지점을 사용하려고합니다. 점은 _XY에 저장된 좌표 (X, Y)로 정의됩니다.scikit-learn 집계 클러스터링 및 연결
클러스터는 C = kneighbors_graph(_XY, n_neighbors = 20)
에 의해 정의 된 연결 매트릭스를 통해 몇 개의 이웃으로 제한됩니다.
일부 클러스터는 이웃 클러스터라고해도 클러스터의 일부가 아니기 때문에 연결 매트릭스를 수정하여이 지점 사이에 0을 넣습니다.
알고리즘은 끝에서 원활하게 실행 만이 일부 클러스터, 즉 함께하지 않아야 포인트, 나는 아이들에서 _C = 0
을 부과하는 몇 몇을 포함, 나는 문제가 발생하는 것을 볼 수있다 _C [i, k] = 0이더라도 두 점 (i, j)의 클러스터가 이미 형성되고 k가 (i, j) 조인 할 때.
그래서 일부 클러스터의 크기가 2보다 큰 경우 연결 제한이 전파되는 것을 궁금해했습니다. _C는이 경우 정의되지 않았습니다.
감사합니다.
답변 해 주셔서 감사합니다. 내가 글을 쓰는지 보자. C [i, j] = 1, C [j, k] = 1, C [i, k] = 0이라면 i와 k는 연결될 수 없다. 첫 번째 단계에서 i와 j는 연결됩니다. 그러면 k는 클러스터 (i, j)에 링크 될 수있다. 나는 C [i, k] = 0이기 때문에 k를 결합 할 수 없다고 생각했습니다. 그러나 실제로 C [j, k] = 1이기 때문에 (i, j)와 k 사이의 연결이 가능합니다. 이는 C [(i, j), k] = max (C [i, k], C [j, k])를 정의하는 것과 같다. –
주저하지 말고 질문하십시오. 몇 마디로 그 메커니즘을 설명하는 것은 간단하지 않습니다. – eickenberg
정확히 - 그들은 중개자를 통해 연결되었습니다. 나는 데이터가 충분히 유사하다면이 클러스터가 형성되는 것을 금지하는 것이 가능하다고 생각하지 않는다. 물론 부품을 완전히 분리하지 않는 한. 그러나이 경우 응집 기는 때로는 연결이 끊긴 구성 요소를 다시 연결합니다. – eickenberg