1.根据数据构造一个 Graph ,Graph 的每一个节点对应一个数据点,将相似的点连接起来,并且边的权重用于表示数据之间的相似度。把这个 Graph 用邻接矩阵的形式表示出来,记为 。一个最偷懒的办法就是:直接用我们前面在 K-medoids 中用的相似度矩阵作为 。
2.把 的每一列元素加起来得到 个数,把它们放在对角线上(其他地方都是零),组成一个 的矩阵,记为 。并令 。
3.求出前k个最小的特征值和对应的特征向量。
L=D-w;
matrixSize=size(L);
[v,d]=eig(L);
d=diag(d);
v=[v;d']';
v = sortrows(v,matrixSize+1) ;
firstKlemda = v(1:3,matrixSize(1));
firstkVector = v(1:3,1:matrixSize)';
4.将选取的特征向量定义为一个新矩阵,该矩阵每一行为一个样本,根据k-means分类