2014-11-06 5 views
0

정규화 된 커트를 사용하여 스펙트럼 임베딩/클러스터링을 수행하려고합니다. 다음 코드를 작성했지만 논리적 인 병목 현상이 발생했습니다. 고유 벡터를 클러스터링 한 후에는 무엇을해야합니까? 원본 데이터 세트에서 클러스터를 형성하는 방법을 모르겠습니다. 나는 각각의 고유 벡터 레이블을 얻을, 그 후스펙트럼 임베딩 - 스펙트럼 클러스터링

D = np.diag(np.sum(A, 0)) 
D_half_inv = np.diag(1.0/np.sqrt(np.sum(A, 0))) 
M = np.dot(D_half_inv, np.dot((D - A), D_half_inv)) 
# compute eigenvectors and eigenvalues 
(w, v) = np.linalg.eigh(M) 
# renorm eigenvectors to have norm 1 
var = len(w) 
v1 = np.array(np.zeros((var, var))) 
for j in range(var): 
    v[:][j] = v[:][j]/np.sqrt(np.sum(A,0)) 
    v[:][j] = v[:][j]/np.linalg.norm(v1[:][j]) 
v_trailing = v[:,1:45] #omit the corresponding eigenvector of the smallest eigenvalue  which is 0 and 45 is my embedding dimension 
k = 20 #number of clusters 
centroids,idx = kmeans2(v_trailing, k) 

(A 내 친 화성 기질이다). 하지만 원래의 데이터 세트에 이러한 라벨을 어떻게 연결할 수 있습니까?

답변

0

원본 데이터 집합에 대한 출력 매핑은 수정 된 집합의 레이블 색인에 해당합니다. Y I가 C 인 경우

그래서 는 다음의 번째 항목이 미터

또는 다른 방식으로 표현 될 것이다 m

1 C하자 ..... C M 고유 벡터를 클러스터링하여 생성 된 클러스터 세트는 다음과 같습니다. A ..... M 여기서 A i = {j | y j C 의 요소

+0

이것은 친화도 행렬 또는 친화 행렬이 만들어진 원래 데이터에 적용됩니까? – gelazari

+0

이것은 어피 니티 매트릭스에 해당합니다. 이것은이 기술에 도움이되는 안내서입니다. http://www.cs.columbia.edu/~jebara/4772/papers/Luxburg07_tutorial.pdf – bearrito

+0

사실 저는 그것을 읽었지만 아직도 몇 가지를 이해할 수 없습니다. 그럼, 클러스터를 얻은 후에, 나는 레이블을 기반으로 친화력 매트릭스를 재 배열해야합니까? – gelazari