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)[源代码]#
将集群应用于规范化拉普拉斯的投影。
在实践中,当单个聚类的结构是高度非凸的时,或者更一般地当聚类的中心和扩展的度量不是完整聚类的合适描述时,例如当聚类是2D平面上的嵌套圆时,谱聚类是非常有用的。
如果亲和力矩阵是图的邻近矩阵,则可以使用此方法来寻找规范化的图切割 [1], [2].
打电话时
fit
使用诸如具有欧几里得距离的高斯(又名RBS)核之类的核函数来构建亲和力矩阵d(X, X)
np.exp(-gamma * d(X,X) ** 2)
或k近邻连接矩阵。
或者,可以通过设置来指定用户提供的亲和力矩阵
affinity='precomputed'
.阅读更多的 User Guide .
- 参数:
- n_clustersint, default=8
投影子空间的维度。
- eigen_solver{'arpack', 'lobpcg', 'amg'}, default=None
要使用的特征值分解策略。AMG需要安装pyamg。它可以在非常大的稀疏问题上更快,但也可能导致不稳定。如果没有,那么
'arpack'
采用了看到 [4] 有关的更多详细信息'lobpcg'
.- n_componentsint,默认=无
用于谱嵌入的特征量。如果无,默认为
n_clusters
.- random_stateint,RandomState实例,默认=无
伪随机数生成器,用于初始化lobpcg特征量分解,当
eigen_solver == 'amg'
,以及K-Means初始化。使用int使结果在调用之间具有确定性(请参阅 Glossary ).备注
当使用
eigen_solver == 'amg'
,也有必要用来修复全球麻木的种子np.random.seed(int)
以获得确定性结果。欲了解更多信息,请访问https://github.com/pyamg/pyamg/issues/139。- n_initint,默认值=10
k-means算法将在不同的重心种子下运行的次数。就惯性而言,最终结果将是n_initit连续运行的最佳输出。仅在以下情况下使用
assign_labels='kmeans'
.- gammafloat,默认=1.0
rBF、poly、Sigmoid、Laplacian和chi 2核的核系数。忽略
affinity='nearest_neighbors'
,affinity='precomputed'
或affinity='precomputed_nearest_neighbors'
.- affinity字符串或可调用,默认=' rBF '
- 如何构建亲和力矩阵。
“nearest_neighbors”:通过计算最近邻居的图来构建亲和力矩阵。
“rbf”:使用辐射基函数(RBS)核构建亲和力矩阵。
“预先计算的”:解释
X
作为预先计算的亲和力矩阵,其中越大的值表示实例之间越大的相似性。“precalled_neighbors”:解释
X
作为预先计算的距离的稀疏图,并根据n_neighbors
每个实例的最近邻居。支持的内核之一
pairwise_kernels
.
仅应使用产生相似性分数(随着相似性而增加的非负值)的核。该属性不会由集群算法检查。
- n_neighborsint,默认值=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
可能会导致趋同问题,应该避免。Added in version 1.2: 添加了“自动”选项。
- assign_labels' kmeans ','离散','集群_qr ',默认=' kmeans '
在嵌入空间中分配标签的策略。有两种方法可以在Laplacian嵌入后分配标签。k-means是一种流行的选择,但它可能对初始化敏感。离散化是另一种对随机初始化不太敏感的方法 [3]. 集群_qr方法 [5] 在谱聚类中直接从特征向量中提取聚类。与k-means和离散化相比,cluster_qr没有调优参数,也不运行迭代,但在质量和速度方面可能优于k-means和离散化。
在 1.1 版本发生变更: 添加了新的标签方法“集群_qr”。
- degreefloat,默认=3
多项核的次数。被其他果仁忽视。
- coef0float,默认=1
多项核和Sigmoid核的零系数。被其他果仁忽视。
- kernel_params字符串为any,默认=无
Parameters (keyword arguments) and values for kernel passed as callable object. Ignored by other kernels.
- n_jobsint,默认=无
当时要运行的并行作业数
affinity='nearest_neighbors'
或affinity='precomputed_nearest_neighbors'
.邻居搜索将并行进行。None
意思是1,除非在a中joblib.parallel_backend
上下文-1
意味着使用所有处理器。看到 Glossary 了解更多详细信息。- verbose布尔,默认=假
冗长模式。
Added in version 0.24.
- 属性:
- affinity_matrix_array-like of shape(n_samples,n_samples)
用于聚类的亲和矩阵。仅在致电后可用
fit
.- labels_形状的nd数组(n_samples,)
每个点的标签
- n_features_in_int
期间看到的功能数量 fit .
Added in version 0.24.
- feature_names_in_ :nd形状数组 (
n_features_in_
,)nd数组形状( Names of features seen during fit. Defined only when
X
has feature names that are all strings.Added in version 1.0.
参见
sklearn.cluster.KMeans
K-Means聚类
sklearn.cluster.DBSCAN
含噪音应用程序的基于密度的空间聚集。
注意到
0表示相同元素,高值表示非常不相似元素的距离矩阵可以通过应用高斯(又名RBS,heat)核转换为非常适合该算法的亲和力/相似性矩阵::
np.exp(- dist_matrix ** 2 / (2. * delta ** 2))
哪里
delta
是代表高斯核宽度的自由参数。另一种选择是采用点的k近邻连通性矩阵的对称版本。
如果安装了pyamg包,就会使用它:这大大加快了计算速度。
引用
[3]Multiclass spectral clustering, 2003 Stella X. Yu, Jianbo Shi <https://people.eecs.berkeley.edu/~jordan/courses/281B-spring04/readings/yu-shi.pdf>
_[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)[源代码]#
根据特征或亲和力矩阵执行光谱集群。
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}或 (n_samples,n_samples)
训练实例进行集群、实例之间的相似性/亲和力,如果
affinity='precomputed'
,或实例之间的距离,如果affinity='precomputed_nearest_neighbors
.如果稀疏矩阵以除csr_matrix
,csc_matrix
,或者coo_matrix
,会转换成稀疏的csr_matrix
.- y忽视
未使用,此处列出是为了按照惯例实现API一致性。
- 返回:
- self对象
估计器的一个合适实例。
- fit_predict(X, y=None)[源代码]#
对上执行谱集群
X
并返回集群标签。- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}或 (n_samples,n_samples)
训练实例进行集群、实例之间的相似性/亲和力,如果
affinity='precomputed'
,或实例之间的距离,如果affinity='precomputed_nearest_neighbors
.如果稀疏矩阵以除csr_matrix
,csc_matrix
,或者coo_matrix
,会转换成稀疏的csr_matrix
.- y忽视
未使用,此处列出是为了按照惯例实现API一致性。
- 返回:
- labels形状的nd数组(n_samples,)
集群标签。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请检查 User Guide 关于路由机制如何工作。
- 返回:
- routingMetadataRequest
A
MetadataRequest
封装路由信息。