今天看了谱聚类算法综述(主要最近看的论文好像中心都偏在聚类分割这里),具体看了一种算法,实现起来也很简单,有点晚了,省去原理部分(明天补上),贴Matlab代码。
%%%补上一点综述(每次都要转成PDF、、、)
NJW算法
function U=NJW(data,k)
%%NJW算法 选取拉氏矩阵的前K个最大特征值对应的特征向量,使其在R(k)空间中构成与原数据一一对应的表述,并在该空间内进行聚类
%%data n*m n样本个数 m 维度
%% k 选择前k个最大特征值对应的特征向量
%计算相似矩阵
affinity = CalculateAffinity(data);
% 计算对角矩阵
D=eye(size(affinity,1));
for i=1:size(affinity,1)
D(i,i) = sum(affinity(i,:));
end
%计算拉普拉斯矩阵,采用非规范化矩阵
% L=D-affinity;
% 规范化