本文简要介绍python语言中 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, verbose=False)
将聚类应用于归一化拉普拉斯算子的投影。
在实践中,当单个集群的结构高度非凸时,或者更一般地,当集群的中心和散布的测量不适合说明整个集群时,频谱聚类非常有用,例如当集群嵌套时二维平面上的圆。
如果亲和矩阵是图的邻接矩阵,则该方法可用于查找归一化图割[1]、[2]。
调用
fit
时,使用具有欧几里德距离d(X, X)
的高斯(又名 RBF)内核之类的内核函数构造亲和矩阵:np.exp(-gamma * d(X,X) ** 2)
或 k-nearest 邻居连接矩阵。
或者,可以通过设置
affinity='precomputed'
来指定用户提供的亲和度矩阵。在用户指南中阅读更多信息。
- n_clusters:整数,默认=8
投影子空间的维度。
- eigen_solver:{‘arpack’, ‘lobpcg’, ‘amg’},默认=无
要使用的特征值分解策略。 AMG 需要安装 pyamg。它可以更快地解决非常大的稀疏问题,但也可能导致不稳定。如果无,则使用
'arpack'
。有关'lobpcg'
的更多详细信息,请参阅 [4]。- n_components:整数,默认=n_clusters
用于谱嵌入的特征向量数。
- random_state:int,RandomState 实例,默认=无
一个伪随机数生成器,用于在
eigen_solver == 'amg'
和 K-Means 初始化时初始化 lobpcg 特征向量分解。使用int 使结果在调用之间具有确定性(参见词汇表)。注意
使用
eigen_solver == 'amg'
时,还需要使用np.random.seed(int)
修复全局 numpy 种子以获得确定性结果。有关详细信息,请参阅https://github.com/pyamg/pyamg/issues/139。- n_init:整数,默认=10
k-means 算法将使用不同的质心种子运行的次数。就惯性而言,最终结果将是 n_init 连续运行的最佳输出。仅在
assign_labels='kmeans'
时使用。- gamma:浮点数,默认=1.0
rbf、poly、sigmoid、laplacian 和 chi2 内核的内核系数。忽略
affinity='nearest_neighbors'
。- affinity:str 或可调用,默认='rbf'
- 如何构建亲和矩阵。
- ‘nearest_neighbors’:通过计算最近邻图来构造亲和矩阵。
- ‘rbf’:使用径向基函数 (RBF) 内核构造亲和矩阵。
- ‘precomputed’:将
X
解释为预先计算的亲和度矩阵,其中较大的值表示实例之间的相似性较大。 - ‘precomputed_nearest_neighbors’:将
X
解释为预先计算的距离的稀疏图,并从每个实例的n_neighbors
最近邻居构造二进制亲和矩阵。 pairwise_kernels
支持的内核之一。
仅应使用产生相似性分数(随相似性增加的非负值)的内核。聚类算法不检查此属性。
- n_neighbors:整数,默认=10
使用最近邻方法构造亲和矩阵时要使用的邻居数。忽略
affinity='rbf'
。- eigen_tol:浮点数,默认=0.0
eigen_solver='arpack'
时拉普拉斯矩阵特征分解的停止标准。- assign_labels:{‘kmeans’, ‘discretize’},默认='kmeans'
在嵌入空间中分配标签的策略。拉普拉斯嵌入后有两种分配标签的方法。 k-means 是一个流行的选择,但它可能对初始化敏感。离散化是另一种对随机初始化不太敏感的方法[3]。
- degree:浮点数,默认=3
多项式核的度数。被其他内核忽略。
- coef0:浮点数,默认=1
多项式和 sigmoid 内核的零系数。被其他内核忽略。
- kernel_params:str 的字典到任何,默认=无
内核的参数(关键字参数)和值作为可调用对象传递。被其他内核忽略。
- n_jobs:整数,默认=无
affinity='nearest_neighbors'
或affinity='precomputed_nearest_neighbors'
时要运行的并行作业数。邻居搜索将并行完成。None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关详细信息,请参阅词汇表。- verbose:布尔,默认=假
详细模式。
- affinity_matrix_:形状类似数组 (n_samples, n_samples)
用于聚类的亲和矩阵。仅在调用
fit
后可用。- labels_:ndarray 形状 (n_samples,)
每个点的标签
- n_features_in_:int
拟合期间看到的特征数。
- feature_names_in_:ndarray 形状(
n_features_in_
,) 拟合期间看到的特征名称。仅当
X
具有全为字符串的函数名称时才定义。
参数:
属性:
注意:
距离矩阵 0 表示相同元素,高值表示非常不同的元素,可以通过应用高斯(又名 RBF,热)核将算法转换为相似度/相似度矩阵 well-suited:
np.exp(- dist_matrix ** 2 / (2. * delta ** 2))
其中
delta
是一个自由参数,表示高斯核的宽度。另一种方法是采用点的k-nearest 邻居连接矩阵的对称版本。
如果安装了 pyamg 包,则使用它:这大大加快了计算速度。
参考:
例子:
>>> 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)
相关用法
- Python sklearn SpectralCoclustering用法及代码示例
- Python sklearn SpectralEmbedding用法及代码示例
- Python sklearn SpectralBiclustering用法及代码示例
- Python sklearn SparsePCA用法及代码示例
- Python sklearn SplineTransformer用法及代码示例
- Python sklearn SparseCoder用法及代码示例
- Python sklearn SparseRandomProjection用法及代码示例
- Python sklearn ShrunkCovariance用法及代码示例
- Python sklearn SelfTrainingClassifier用法及代码示例
- Python sklearn SelectFromModel用法及代码示例
- Python sklearn SelectFpr用法及代码示例
- Python sklearn ShuffleSplit用法及代码示例
- Python sklearn StratifiedGroupKFold用法及代码示例
- Python sklearn Sum用法及代码示例
- Python sklearn SVR用法及代码示例
- Python sklearn SelectKBest用法及代码示例
- Python sklearn SimpleImputer用法及代码示例
- Python sklearn SGDOneClassSVM用法及代码示例
- Python sklearn StratifiedShuffleSplit用法及代码示例
- Python sklearn SVC用法及代码示例
- Python sklearn SGDRegressor用法及代码示例
- Python sklearn SequentialFeatureSelector用法及代码示例
- Python sklearn SelectPercentile用法及代码示例
- Python sklearn SkewedChi2Sampler用法及代码示例
- Python sklearn SGDClassifier用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.cluster.SpectralClustering。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。