谱聚类(spectral clustering) python可视化实现

算法python实现:

对于公式的推导什么的个人的理解并不是很深,下面直接说说这个算法的实现吧:

  1. 首先,因为这个算法其实最先是叫做谱方法,用于社区挖掘或者图挖掘,所以要用在聚类上,你需要一种东西来对样本直接进行连接,实现一个类似于图一样的结构,这里使用knn,就是前k个近邻就有连通,其他就没有。这样我们就能得到矩阵W,不过,有一个小问题,点a的k近邻中有b,但是b的k近邻可能是没有a的,这个时候,为了让矩阵W是一个对称矩阵,我们采用一个或原则,将W=(W+WT)/2

,这个就能得到一个对称的相似性矩阵了。
获得相似矩阵W

第二步很简单,算出每个节点的度数,得到度矩阵D。
获得度矩阵D

  1. 得到拉普拉斯矩阵L=DW,              。

  2. 获得拉普拉斯矩阵L的特征矩阵,这个用内置函数就好。

  3. 获得特征矩阵之后,我们使用kmeans方法来对特征矩阵进行一个聚类,每个特征向量是特征矩阵的列,而每行当成一个聚类样本。这样一聚类就是最终的成果了。为了图方便,我这里直接使用sklearn中的KMeans函数来调用:
    这里写图片描述

好了,到这里基本就大功告成了,分类基本已经完成了,最后来一波可视化,看看我们的实验结果,因为谱聚类能对球形数据进行聚类,所以我们直接来试试球形数据集:
这里写图片描述


参考:https://blog.csdn.net/pp8818/article/details/61623730

源码参考:https://github.com/PP8818/Python-Projects/tree/master/py2/data-mining/clustering/spectral_cluster

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值