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

谱聚类介绍:

这篇博客对于谱聚类的介绍包括公式推导挺到位的,当时上课的ppt也是截这个图,所以能看懂的话挺不错的。http://www.cnblogs.com/FengYan/archive/2012/06/21/2553999.html

算法python实现:

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

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

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
以下是一个使用DIANA聚类算法对鸢尾花数据集进行聚类,并可视化聚类结果的Python代码示例: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.spatial.distance import pdist, squareform from sklearn.datasets import load_iris def diana(X, k): # 计算初始距离矩阵 D = squareform(pdist(X)) n = len(X) # 开始聚类 clusters = [[i] for i in range(n)] while len(clusters) < k: max_d = 0 to_merge = None # 找到距离最远的簇对 for i in range(len(clusters)): for j in range(i+1, len(clusters)): d = 0 for m in clusters[i]: for n in clusters[j]: d += D[m][n] d /= len(clusters[i]) * len(clusters[j]) if d > max_d: max_d = d to_merge = (i, j) # 合并簇 i, j = to_merge clusters[i] = clusters[i] + clusters[j] del clusters[j] # 返回簇的索引 labels = np.zeros(n) for i, c in enumerate(clusters): for j in c: labels[j] = i return labels # 加载鸢尾花数据集 iris = load_iris() X = iris.data # 使用DIANA聚类 labels = diana(X, 3) # 可视化聚类结果 df = pd.DataFrame(X, columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width']) df['label'] = labels colors = plt.cm.Spectral(np.linspace(0, 1, len(df['label'].unique()))) for i, color in zip(df['label'].unique(), colors): plt.scatter(df[df['label'] == i]['sepal_length'], df[df['label'] == i]['sepal_width'], color=color) plt.xlabel('sepal length') plt.ylabel('sepal width') plt.show() ``` 这个代码将加载鸢尾花数据集,使用DIANA聚类算法将其分为3个簇,并将聚类结果可视化。可以看到,不同的簇被不同的颜色表示出来。其中,横轴表示花萼长度,纵轴表示花萼宽度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值