matlab中有没有谱聚类,matlab – 谱聚类

首先我必须说我是matlab的新手(以及这个网站……),所以请原谅我的无知.

我正在尝试在matlab中编写一个函数,它将使用Spectral Clustering将一组点分成两个簇.

我的代码如下

function Groups = TrySpectralClustering(data)

dist_mat = squareform(pdist(data));

W= zeros(length(data),length(data));

for i=1:length(data),

for j=(i+1):length(data),

W(i,j)=10^(-dist_mat(i,j));

W(j,i)=W(i,j);

end

end

D = zeros(length(data),length(data));

for i=1:length(W),

D(i,i)=sum(W(i,:));

end

L=D-W;

L=D^(-0.5)*L*D^(-0.5);

[ V E ] = eig(L);

disp ('V:');

disp (V);

如果我理解正确,那么通过使用第二个最小的特征向量,我应该能够将数据划分为两个聚类 – 如果第二个特征向量的第i个成员是正数,则第i个数据点将在一个聚类中,否则它将在另一个集群中.

但是,当我尝试以下

f=[1,1;0,0;1,0;0,1;100,100;100,101;101,101;101,100]

TrySpectralClustering(f)

我希望前四个点组成一个簇,后四个组成另一个簇.

但是,我收到了

V:

-0.0000 -0.5000 0.0000 -0.5777 0.0000 0.4078 -0.0000 0.5000

-0.0000 -0.5000 0.0000 0.5777 0.0000 -0.4078 -0.0000 0.5000

-0.0000 -0.5000 0.0000 0.4078 0.0000 0.5777 -0.0000 -0.5000

-0.0000 -0.5000 0.0000 -0.4078 0.0000 -0.5777 -0.0000 -0.5000

-0.5000 -0.0000 -0.0000 -0.0000 -0.7071 -0.0000 0.5000 -0.0000

-0.5000 -0.0000 0.7071 0.0000 -0.0000 -0.0000 -0.5000 -0.0000

-0.5000 0.0000 -0.0000 0.0000 0.7071 0.0000 0.5000 0.0000

-0.5000 0 -0.7071 0 0 0 -0.5000 0

采取第二个特征向量

-0.0000 -0.5000 0.0000 0.5777 0.0000 -0.4078 -0.0000 0.5000

我发现一个簇包括点1,0; 0,1; 100,100; 101,100

另一个簇由点1,1; 0,0; ​​100,101; 101,101组成

我想知道我做错了什么.

注意:我正在将上述工作作为家庭作业项目的一部分.

提前致谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值