谱聚类算法是一种用于同时考虑矩阵的行(样本)和列(特征)的聚类方法。它旨在识别样本之间的模式,以及样本子集中的模式,从而允许在数据中检测局部结构。这使得谱聚类特别适合于特征顺序固定的数据集,例如图像、时间序列或基因组。
使用make_checkerboard
函数生成样本数据。每个像素在300x300的形状中代表一个来自均匀分布的值。噪声是从正态分布中添加的,其中噪声的标准差被选择为噪声值。可以看到,数据分布在12个聚类单元中,并且相对容易区分。
重排数据,目标是使用谱聚类算法重建它。创建了重排的行和列索引列表,并重新定义了重排后的数据并绘制它。观察到,原始数据矩阵的结构已经丢失。
拟合模型并将获得的聚类与真实情况进行比较。注意,在创建模型时,指定了与创建数据集时相同的聚类数量,这将有助于获得良好的结果。
现在,根据谱聚类模型分配的行和列标签的升序重新排列数据,并再次绘制。行标签的范围是0到3,而列标签的范围是0到2,代表每行有4个聚类,每列有3个聚类。
最后,想展示模型分配的行和列标签之间的关系。因此,使用numpy.outer
创建一个网格,它取排序后的行标签和列标签,并每个加1以确保标签从1而不是0开始,以便于更好的可视化。
脚本的总运行时间为:(0分钟0.564秒)
可以下载Jupyter笔记本:
可以下载Python源代码:
可以下载压缩包:
谱共聚类算法演示
使用轮廓分析选择KMeans聚类的数量
标签传播学习复杂结构