sklearn.cluster.SpectralClustering

class sklearn.cluster.SpectralClustering(n_clusters=8, *, eigen_solver=None, n_components=None, random_state=None, n_init=10, gamma=1.0, affinity='rbf', n_neighbors=10, eigen_tol=0.0, assign_labels='kmeans', degree=3, coef0=1, kernel_params=None, n_jobs=None)

[源码]

将聚类应用于归一化Laplacian的投影。

在实际应用中,光谱聚类是非常有用的,当单个簇的结构是高度非凸的,或者更普遍地说,当簇的中心和扩展的度量并不适合描述完整的聚类时,光谱聚类是非常有用的。例如,当簇是二维平面上的嵌套圆时。

如果亲和度是图的邻接矩阵,则该方法可用于求图的归一化割集。

调用fit时,使用欧氏距离d(X,X)的高斯(又名RBF)核等核函数构造亲和矩阵:

np.exp(-gamma * d(X,X) ** 2)

或k-最近邻连通矩阵。

或者,使用precomputed方法,可以使用用户提供的关联矩阵。

用户指南中阅读更多内容。

参数 说明
n_clusters integer, optional
投影子空间的维数
eigen_solver {None, ‘arpack’, ‘lobpcg’, or ‘amg’}
特征值分解策略的应用。AMG需要安装pyamg。它可以在非常大的稀疏问题上更快,但也可能导致不稳定。
n_components integer, optional, default=n_clusters
用于光谱嵌入的特征向量数
random_state int, RandomState instance, default=None
一种用于Lobpcg特征向量分解初始化的伪随机数发生器,当eigen_solver='amg', 通过K-Means初始化。使用int使随机性确定性。见Glossary
n_init int, optional, default: 10
k均值算法将使用不同的质心种子运行。最后的结果将是n_init连续运行的最佳inertia输出。
gamma float, default=1.0
rbf,poly, sigmoid, laplacian 和chi2 核的核系数。对于affinity='nearest_neighbors'的情况请忽略。
affinity string or callable, default ‘rbf’
如何构造亲和矩阵
- ‘nearest_neighbors’:通过计算近邻图来构造亲和矩阵。
- ‘rbf’:利用径向基函数(RBF)核构造亲和矩阵。
- ‘precomputed’:将X解释为预先计算的亲和矩阵。
- ‘precomputed_nearest_neighbors’:将X解释为预先计算的近邻的稀疏图,并通过选择n_neighbors近邻构造亲和矩阵。
- 由pairwise_kernels支撑的一种核。

只应使用产生相似分数的内核(非负值,随相似性的增加)。聚类算法不检查此属性。
n_neighbors integer
使用最近邻方法构造关联矩阵时要使用的邻居数。当affinity='rbf'忽略。
eigen_tol float, optional, default: 0.0
Laplacian矩阵特征点的停止准则, 当eigen_solver='arpack'
assign_labels {‘kmeans’, ‘discretize’}, default: ‘kmeans’
在嵌入空间中分配标签的策略。在Laplacian嵌入之后,有两种分配标签的方法。k-means可以应用,是一种很受欢迎的选择。但是它对初始化也很敏感。离散化是另一种对随机初始化不那么敏感的方法。
degree float, default=3
多项式核的维度, 其他内核忽略
coef0 float, default=1
多项式核和sigmoid核的零系数。其他内核忽略
kernel_params dictionary of string to any, optional
参数(关键字参数)和作为可调用对象传递的内核值。其他内核忽略。
n_jobs int or None, optional (default=None)
要运行的并行任务数。None意味1, 除非在joblib.parallel_backend环境中。-1指使用所有处理器。有关详细信息,请参Glossary
属性 方法
affinity_matrix_ array-like, shape (n_samples, n_samples)
用于聚类的亲和矩阵。只有在调用fit之后才能用。
labels_ array, shape (n_samples,)
每一点的标签

注意

如果有一个亲和矩阵,例如距离矩阵,它的0表示相同的元素,而高的值表示非常不同的元素,则可以通过应用高斯(RBF,热)核将其转换成一个非常适合该算法的相似矩阵:

np.exp(- dist_matrix ** 2 / (2. * delta ** 2))

其中delta是一个自由参数,表示高斯核的宽度。

另一种选择是取点的k个最近邻连通矩阵的对称版本。

如果安装了pyamg包,就会使用它:这大大加快了计算速度。

参考

Normalized cuts and image segmentation, 2000 Jianbo Shi, Jitendra Malikhttp://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.2324

A Tutorial on Spectral Clustering, 2007 Ulrike von Luxburghttp://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.165.9323

Multiclass spectral clustering, 2003 Stella X. Yu, Jianbo Shihttps://www1.icsi.berkeley.edu/~stellayu/publication/doc/2003kwayICCV.pdf

示例

>>> from sklearn.cluster import SpectralClustering
>>> import numpy as np
>>> X = np.array([[11], [21], [10],
...               [47], [35], [36]])
>>> clustering = SpectralClustering(n_clusters=2,
...         assign_labels="discretize",
...         random_state=0).fit(X)
>>> clustering.labels_
array([111000])
>>> clustering
SpectralClustering(assign_labels='discretize', n_clusters=2,
    random_state=0)

方法

方法 说明
fit(self, X[, y]) 根据特征或亲和矩阵执行光谱聚类
fit_predict(self, X[, y]) 根据特征或亲和矩阵执行光谱聚类,并返回聚类标签。
get_params(self[, deep]) 获取此估计器的参数
set_params(self, **params) 设置此估计器的参数
__init__(self, n_clusters=8, *, eigen_solver=None, n_components=None, random_state=None, n_init=10, gamma=1.0, affinity='rbf', n_neighbors=10, eigen_tol=0.0, assign_labels='kmeans', degree=3, coef0=1, kernel_params=None, n_jobs=None)

[源码]

初始化self。请参阅help(type(self))以获得准确的说明

fit(self, X, y=None)

[源码]

根据特征或亲和矩阵执行光谱聚类

参数 说明
X array-like or sparse matrix, shape (n_samples, n_features), or array-like, shape (n_samples, n_samples)
要聚类的实例, 或者实例之间的相似性/亲和度, 如果affinity='precomputed'。如果以csr_matrix, csc_matrix, 或者 coo_matrix以外的格式提供稀疏矩阵,则将其转换为稀疏csr_matrix
y Ignored
未使用,在此按约定呈现为api一致性。
返回值 说明
self -
fit_predict(self, X, y=None)

[源码]

根据特征或亲和矩阵执行光谱聚类,并返回聚类标签。

参数 说明
X array-like or sparse matrix, shape (n_samples, n_features), or array-like, shape (n_samples, n_samples)
要聚类的实例, 或者实例之间的相似性/亲和度, 如果affinity='precomputed'。如果以csr_matrix, csc_matrix, 或者 coo_matrix以外的格式提供稀疏矩阵,则将其转换为稀疏csr_matrix
y Ignored
未使用,在此按约定呈现为api一致性。
返回值 说明
labels ndarray, shape (n_samples,)
聚类标签
get_params(self, deep=True)

[源码]

获取此估计器的参数

表格 说明
deep bool, default=True
如果为True,则将返回此估计器的参数和所包含的作为估计量的子对象。
返回值 说明
params mapping of string to any
映射到其值的参数名称
set_params(self, **params)

[源码]

设置此估计器的参数

该方法适用于简单估计器以及嵌套对象(例如pipelines)。后者具有表单的 <component>__<parameter>参数,这样就可以更新嵌套对象的每个组件。

表格 说明
**params dict
估计器参数
返回值 说明书
self object
估计器实例

sklearn.cluster.SpectralClustering使用示例