七、SpectralClustering

  1. SpectralClusteringscikit-learn给出的谱聚类模型。其原型为

    1. class sklearn.cluster.SpectralClustering(n_clusters=8, eigen_solver=None,
    2. random_state=None, n_init=10, gamma=1.0, affinity='rbf', n_neighbors=10,
    3. eigen_tol=0.0, assign_labels='kmeans', degree=3, coef0=1, kernel_params=None,
    4. n_jobs=None)
    • n_clusters:一个整数,指定降维的维数,即 七、SpectralClustering - 图1

    • eigen_solver:一个字符串或者None,指定求解特征值的求解器。可以为:

      • 'arpack':使用arpack 求解器。
      • 'lobpcg':使用lobpcg 求解器。
      • 'amg':使用amg 求解器。它要求安装pyamg。优点是计算速度快,支持大规模、稀疏数据,但是可能导致不稳定。
    • random_state:指定随机数种子。

    • n_init:一个整数,指定二次聚类时的k-means 算法的n_init 参数,它会重复执行k-means 算法n_init 轮,选择效果最好的那轮作为最终聚类的输出。

    • affinity:一个字符串、数组或者可调用对象,指定相似度矩阵的计算方式。

      • 如果是字符串,则必须是'nearest_neighbors''precomputed''rbf'、或者由sklearn.metrics.pairwise_kernels 支持的其它核函数。
      • 如果是一个数组,则直接给出相似度矩阵。
      • 如果是可调用对象,则输入两个样本,输出其相似度。
    • gamma:一个浮点数,它给出了rbf,poly,sigmoid,laplacian,chi2 核的系数。

      如果affinity='nearest_neighbors',则忽略该参数。

    • degree:一个整数,当使用多项式核时,指定多项式的度。

    • coef0:一个整数,当使用多项式核和sigmoid 核时,指定偏置。

    • kernel_params:一个字典,当affinity 是可调用对象时,传给该可调用对象的关键词参数。

    • n_neighbors:一个整数,指定当计算相似度矩阵时,考虑样本周围近邻的多少个样本。

      如果affinity='rbf',则忽略该参数。

    • eigen_tol:一个浮点数,当使用arpack 求解器求解特征值时,指定收敛阈值。

    • assign_labels:一个字符串,指定二次聚类的算法。

      • 'kmeans':使用k-means 算法执行二次聚类。
      • 'discretize':使用discretize 执行二次聚类。
    • n_jobs:指定并行度。
  2. 属性:

    • affinity_matrix:一个形状为(n_samples,n_samples) 的数组,给出了相似度矩阵。
    • labels_:一个形状为(n_samples,) 的数组,给出了每个样本的簇标记。
  3. 方法:

    • fit(X[,y]):训练模型。
    • fit_predict(X[, y]):训练模型并执行聚类,返回每个样本所属的簇标记。