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='auto', assign_labels='kmeans', degree=3, coef0=1, kernel_params=None, n_jobs=None, verbose=False)[source]#
将聚类应用于归一化拉普拉斯算子的投影。
在实践中,当单个聚类的结构高度非凸时,或者更一般地,当聚类的中心和 spread(扩散)的度量不能很好地描述整个聚类时(例如,当聚类是二维平面上的嵌套圆时),谱聚类非常有用。
如果亲和力矩阵是图的邻接矩阵,则此方法可用于查找归一化图割 [1], [2]。
调用
fit时,亲和力矩阵是使用核函数(例如,使用欧几里得距离d(X, X)的高斯(也称为 RBF)核)或 k-最近邻连接矩阵构建的。np.exp(-gamma * d(X,X) ** 2)
或者,可以通过设置
affinity='precomputed'来指定用户提供的亲和力矩阵。有关详细信息,请参阅 用户指南。
投影子空间的维度。
- 参数:
- n_clustersint, default=8
n_clustersint, default=8
- 要形成的聚类数。
eigen_solver{‘arpack’, ‘lobpcg’, ‘amg’}, default=None
- n_componentsint, default=None
要使用的特征值分解策略。AMG 需要安装 pyamg。它在非常大、稀疏的问题上可能更快,但也可能导致不稳定性。如果为 None,则使用
'arpack'。有关'lobpcg'的更多详细信息,请参阅 [4]。- random_stateint, RandomState instance, default=None
用于谱嵌入的特征向量数。如果为 None,则默认为
n_clusters。注意
用于初始化 lobpcg 特征向量分解的伪随机数生成器,当
eigen_solver == 'amg'时,以及用于 K-Means 初始化。使用整数使结果在多次调用中具有确定性(请参阅 词汇表)。- n_initint, default=10
使用
eigen_solver == 'amg'时,必须同时使用np.random.seed(int)修复全局 numpy 种子才能获得确定性结果。有关进一步信息,请参阅 pyamg/pyamg#139。- gammafloat, default=1.0
k-means 算法将以不同的质心种子运行的次数。最终结果将是 n_init 次连续运行中惯性方面的最佳输出。仅当
assign_labels='kmeans'时使用。- rbf、poly、sigmoid、laplacian 和 chi2 核的核系数。对于
affinity='nearest_neighbors'、affinity='precomputed'或affinity='precomputed_nearest_neighbors',将被忽略。 - affinitystr or callable, default=’rbf’
如何构造亲和力矩阵。
‘nearest_neighbors’:通过计算最近邻图来构造亲和力矩阵。
‘rbf’:使用径向基函数(RBF)核构造亲和力矩阵。
‘precomputed’:将
X解释为预先计算的亲和力矩阵,其中较大的值表示实例之间更大的相似性。‘precomputed_nearest_neighbors’:将
X解释为预先计算的距离的稀疏图,并从每个实例的n_neighbors最近邻居构建二进制亲和力矩阵。
受
pairwise_kernels支持的核之一。- 应仅使用产生相似性分数(非负值且随相似性增加而增加)的核。聚类算法不检查此属性。
n_neighborsint, default=10
- 使用最近邻方法构造亲和力矩阵时要使用的邻居数。对于
affinity='rbf',将被忽略。 eigen_tolfloat, default=”auto”
拉普拉斯矩阵特征分解的停止准则。如果
eigen_tol="auto",则传递的容差将取决于eigen_solver如果
eigen_solver="arpack",则eigen_tol=0.0;
如果
eigen_solver="lobpcg"或eigen_solver="amg",则eigen_tol=None,它将配置底层lobpcg求解器根据其启发式方法自动解析值。有关详细信息,请参阅scipy.sparse.linalg.lobpcg。请注意,当使用
eigen_solver="lobpcg"或eigen_solver="amg"时,tol<1e-5的值可能导致收敛问题,应避免使用。- 版本 1.2 中新增: 添加了 'auto' 选项。
assign_labels{‘kmeans’, ‘discretize’, ‘cluster_qr’}, default=’kmeans’
- degreefloat, default=3
版本 1.1 中更改: 添加了新的标记方法 'cluster_qr'。
- coef0float, default=1
多项式核的度数。其他核忽略。
- 多项式核和 sigmoid 核的零系数。其他核忽略。
kernel_paramsdict of str to any, default=None
- n_jobsint, default=None
作为可调用对象传递的核的参数(关键字参数)和值。其他核忽略。
- verbosebool, default=False
Verbosity mode.
0.24 版本新增。
- 属性:
- 当
affinity='nearest_neighbors'或affinity='precomputed_nearest_neighbors'时,要并行运行的作业数。邻居搜索将并行完成。None表示 1,除非在joblib.parallel_backend上下文中。-1表示使用所有处理器。有关详细信息,请参阅 词汇表。 affinity_matrix_array-like of shape (n_samples, n_samples)
- labels_ndarray of shape (n_samples,)
用于聚类的亲和力矩阵。仅在调用
fit后可用。- n_features_in_int
在 拟合 期间看到的特征数。
0.24 版本新增。
- feature_names_in_shape 为 (
n_features_in_,) 的 ndarray 在 fit 期间看到的特征名称。仅当
X具有全部为字符串的特征名称时才定义。1.0 版本新增。
- 当
另请参阅
每个点的标签K-Means 聚类。
sklearn.cluster.KMeanssklearn.cluster.DBSCAN
注意事项
基于密度的带噪声空间聚类。
np.exp(- dist_matrix ** 2 / (2. * delta ** 2))
一个距离矩阵(其中 0 表示相同的元素,高值表示非常不相似的元素)可以通过应用高斯(也称为 RBF,热)核转换为适合该算法的亲和力/相似性矩阵
其中
delta是表示高斯核宽度的自由参数。另一种方法是采用点的 k-最近邻连接矩阵的对称版本。
References
[4]示例
>>> from sklearn.cluster import SpectralClustering >>> import numpy as np >>> X = np.array([[1, 1], [2, 1], [1, 0], ... [4, 7], [3, 5], [3, 6]]) >>> clustering = SpectralClustering(n_clusters=2, ... assign_labels='discretize', ... random_state=0).fit(X) >>> clustering.labels_ array([1, 1, 1, 0, 0, 0]) >>> clustering SpectralClustering(assign_labels='discretize', n_clusters=2, random_state=0)
有关谱聚类与其他聚类算法的比较,请参阅 比较玩具数据集上的不同聚类算法
- fit(X, y=None)[source]#
从特征或亲和力矩阵执行谱聚类。
- 参数:
- X{array-like, sparse matrix} of shape (n_samples, n_features) or (n_samples, n_samples)
要聚类的训练实例,如果
affinity='precomputed',则为实例之间的相似性/亲和力,如果affinity='precomputed_nearest_neighbors,则为实例之间的距离。如果提供的稀疏矩阵格式不是csr_matrix、csc_matrix或coo_matrix,它将被转换为稀疏csr_matrix。- y被忽略
Not used, present here for API consistency by convention.
- 返回:
- selfobject
拟合后的估计器实例。
- fit_predict(X, y=None)[source]#
对
X执行谱聚类并返回聚类标签。- 参数:
- X{array-like, sparse matrix} of shape (n_samples, n_features) or (n_samples, n_samples)
要聚类的训练实例,如果
affinity='precomputed',则为实例之间的相似性/亲和力,如果affinity='precomputed_nearest_neighbors,则为实例之间的距离。如果提供的稀疏矩阵格式不是csr_matrix、csc_matrix或coo_matrix,它将被转换为稀疏csr_matrix。- y被忽略
Not used, present here for API consistency by convention.
- 返回:
- labelsndarray of shape (n_samples,)
聚类标签。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest。