2016-11-08 1 views
1

클러스터링을 위해 dbscan scikit-learn 알고리즘을 사용합니다. db = DBSCAN(). fit (X)는 예를 들어 8을 반환합니다. 내 목표는 클러스터 구성 요소로 클러스터를 복구하는 것입니다. 나는 X가 벡터에 대한 벡터이고 내가 클러스터 멤버들에 대해 말할 때 기대하는 바는 X의 서브 벡터라고 말했습니다. 저를 도와 줄 사람이 있습니까?scikit-learn DBSCAN을 사용하여 클러스터 구성원/요소 클러스터 가져 오기

+0

질문을 명확히하십시오. 하지만 당신 포인트의 레이블을 찾는 것 같아요. – MMF

답변

3

나는 당신이 당신의 데이터 세트의 각 항목의 클러스터 할당, X.

당신은 labels_ 속성을 사용할 수 있습니다 요구하고있다 생각합니다. db.labels_ 여기에있는 각 색인은 X에서 동일한 색인에 해당하므로 할당을 볼 수 있습니다.

+0

더 명확해야합니다. 예를 들어 x1 = [0,0,0,1,0,1], x2 = [0,0,0,0,1,0] 등으로 X (x1, x2, x3, x4)를 취해 봅시다. db = DBSCAN(). fit (X)를 쓸 때 각 클러스터에 대해 하위 벡터 xi를 복구하려고합니다. 또한 xrange (n_clusters_)의 i에 대해 clusters = [X [db.labels_ == i]]를 수행하면 "하나의 요소가있는 정수 배열 만 인덱스로 변환 할 수 있습니다."라는 오류가 발생합니다. dbscan 알고리즘이 클러스터 요소를 가져 오지 못하게하면 어떤 클러스터링 알고리즘을 사용할 수 있습니까? –

+0

@PascalOuedraogo X [db.labels_ == i]는 둘 이상의 요소가있는 배열을 반환합니다. 대신에 n_clusters_를 반복하여 각각에 대해 다른 배열을 만들 수 있습니다. 개인적으로 나는 클러스터 번호를 목록에 매핑하는 사전을 만들 것입니다 : cluster_dict = {i : X [db.lables == i] for xrange (n_clusters_)} – aberger

관련 문제