0
我正在尝试使用Normalized Cuts执行谱嵌入/聚类。我写了下面的代码,但我坚持了一个逻辑瓶颈。聚类特征向量之后我该做些什么?我不知道如何在原始数据集上形成群集。 (A是我的亲和矩阵)谱嵌入 - 谱聚类
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)
之后,我得到每个特征向量的标签。但是,我如何将这些标签链接到我的原始数据集上?
这适用于我的亲和矩阵或亲和矩阵来自我的原始数据? – gelazari 2014-11-08 16:32:19
这与亲和矩阵相关。这是真正有用的指导这些技术:http://www.cs.columbia.edu/~jebara/4772/papers/Luxburg07_tutorial.pdf – bearrito 2014-11-08 16:34:34
其实我已阅读,但我仍然不明白的一些事情。那么,在获得聚类后,我必须根据标签重新排列我的亲和度矩阵? – gelazari 2014-11-08 16:39:36