聚类分析之谱聚类

聚类根据给定的样本数据集定义一个描述成对数据点相似度的亲合矩阵,并且计算矩阵的特征值特征向量 , 然后选择合适 的特征向量聚类不同的数据点。

谱聚类可以在任意形状的样本空间聚类,且收敛于全局最优解,因此在处理高维数据方面存在着明显优势。总的来说,该算法存在一些不足之处。算法在聚类之前需要设置具体应用的尺度参数,通常需要一些经验。初始聚类中心对整个聚类效果影响很大,存在初始值敏感问题。很难找到图划分的优化解,聚类数目对于整个聚类效果有很大影响。

setp1:计算图的拉普拉斯矩阵L=D-w

setp2:归一化拉普拉斯矩阵

setp3:计算归一化后的拉普拉斯矩阵的特征值和特征向量Q

setp4:对Q进行K-means聚类,return(c1,c2,c3...cn)

优点:因此比传统的聚类算法更加健壮一些,对于不规则的误差数据不是那么敏感,计算复杂度比 K-means 要小

代码:

from sklearn.cluster import SpectralClustering
from sklearn import datasets
from dask.array.learn import predict
import numpy as np
iris = datasets.load_iris()
X = iris.data
y = iris.target
print(y)
clf=SpectralClustering(n_clusters=3)
predicted=clf.fit_predict(X)
print(predicted)
k2y = np.array([0,1,2])
print(k2y[predicted])
print((k2y[predicted] == y).astype(int).mean())

聚类精度为0.9

时间: 2024-10-09 09:35:10

聚类分析之谱聚类的相关文章

关于谱聚类的ng算法的实现

广义上讲,任何在学习过程中应用到矩阵特征值分解的方法均叫做谱学习方法,比如主成分分析(PCA),线性判别成分分析(LDA),流形学习中的谱嵌入方法,谱聚类等等. 由于科苑向世明老师课件上面关于ng的谱聚类算法里面与ng大神的论文中写到的算法中有所出入,导致昨天晚上调了一晚上的算法并没有调出满意的结果,今天在网上找到了ng大神的原始paper阅读一遍,虽然还是有很多不理解的地方,还是有了自己的见解.下面是ng算法的流程. 算法第一步先通过高斯函数计算出每个点与其他点的亲和度,与自己的亲和度为0,对

谱聚类--SpectralClustering

谱聚类一般会先对两两样本间求相似度, 然后根据相似度矩阵求出拉普拉斯矩阵,然后将每个样本映射到拉普拉斯矩阵特诊向量中,最后使用k-means聚类. scikit-learn开源包中已经有现成的接口可以使用,具体见 http://scikit-learn.org/dev/modules/generated/sklearn.cluster.SpectralClustering.html#sklearn.cluster.SpectralClustering 写了一个测试例子 构造二维空间样本点, #!

谱聚类算法

转载自:[聚类算法]谱聚类(Spectral Clustering) 1.问题描述 谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图(sub-Graph),使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的. 对于图的相关定义如下: 对于无向图G = (V,E),V表示顶点集合,即样本集合,即一个顶点为一个样本:E表示边集合. 设样本数为n,即顶点数为n. 权重矩阵:W,为n*n的矩阵,其值wi,j为

用scikit-learn学习谱聚类

在谱聚类(spectral clustering)原理总结中,我们对谱聚类的原理做了总结.这里我们就对scikit-learn中谱聚类的使用做一个总结. 1. scikit-learn谱聚类概述 在scikit-learn的类库中,sklearn.cluster.SpectralClustering实现了基于Ncut的谱聚类,没有实现基于RatioCut的切图聚类.同时,对于相似矩阵的建立,也只是实现了基于K邻近法和全连接法的方式,没有基于$\epsilon$-邻近法的相似矩阵.最后一步的聚类方

谱聚类python实践

聚类后: # -*- coding: utf-8 -*-"""Created on 09 05 2017 @author: similarface"""import numpy as npimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3d.axes3d as p3from sklearn import datasetsfrom sklearn import metricsfrom

谱聚类算法及其代码(Spectral Clustering)

简介 文章将介绍谱聚类(spectral clustering)的基本算法,以及在matlab下的代码实现.介绍内容将包括: 从图分割角度直观理解谱聚类 谱聚类算法步骤 数据以及实现代码 本文将不会涉及细节化的证明和推导,如有兴趣可参考july大神的文章从拉普拉斯矩阵说到谱聚类. 对谱聚类的理解 这一节将从图分割聚类的角度直观理解谱聚类.不过,因为本人是从事社交媒体分析的,将从一种社会关系网络的角度来介绍网络图分割成多个子图的概念. 图的分割 首先将社会关系网络看成是一个整体,每一个个体(use

谱聚类算法(Spectral Clustering)

谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的.其中的最优是指最优目标函数不同,可以是割边最小分割——如图1的Smallest cut(如后文的Min cut), 也可以是分割规模差不多且割边最小的分割——如图1的Best cut(如后文的Normalized cut). 图1 谱聚类无向图划分——Smallest cut和Best cut 这样,

谱聚类(Spectral Clustering, SC)

谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目 的.其中的最优是指最优目标函数不同,可以是割边最小分割——如图1的Smallest cut(如后文的Min cut), 也可以是分割规模差不多且割边最小的分割——如图1的Best cut(如后文的Normalized cut). 图1 谱聚类无向图划分——Smallest cut和Best cut 这样

谱聚类(spectral clustering)及其实现详解

Preface 开了很多题,手稿都是写好一直思考如何放到CSDN上来,一方面由于公司技术隐私,一方面由于面向对象不同,要大改,所以一直没贴出完整,希望日后可以把开的题都补充全. 先把大纲列出来: 一.从狄多公主圈地传说说起 二.谱聚类的演算 (一).演算 1.谱聚类的概览 2.谱聚类构图 3.谱聚类切图 (1).RatioCut (2).Ncut (3).一点题外话 (二).pseudo-code 三.谱聚类的实现(scala) (一).Similarity Matrix (二).kNN/mut