I use sklearn.cluster.SpectralClustering for clustering(I used the default set for SpectralClustering, I paste the log below) the data set $X$. What I want is separate them into 10 groups. But the clustering algorithm, classified almost all of them into one group. Only a few of single points have been separated into other groups. If I perform $Kmeans$ directly on the data $X$(normalized), it well separated into 10 groups. Why? I thought that $spectral clustering$ should perform well too. Because Its obvious that there are 10 groups (I use the $PCA$ to visualize the data).

log info: spectral = SpectralClustering(n_clusters=10) spectral SpectralClustering(affinity='rbf', assign_labels='kmeans', coef0=1, degree=3, eigen_solver=None, eigen_tol=0.0, gamma=1.0, kernel_params=None, n_clusters=10, n_init=10, n_neighbors=10, random_state=None)


1 Answer 1


Why did you choose the parameters this way?

For example, the rbf kernel requires you to tune the kernel bandwidth $\sigma$ carefully, which won't be feasible in unsupervised clustering.

Simply by setting this parameter too small or too large, you can ruin spectral clustering results.

  • 1
    $\begingroup$ I don't know how to choose it, so I left it as default. Is there any materials for parameters? I just started, don't know much about the logic behind parameters. Could you please give me some tips? $\endgroup$
    – Zen
    Oct 12, 2016 at 15:26
  • $\begingroup$ I rarely ever use spectral clustering, because of this and performance. $\endgroup$ Oct 12, 2016 at 18:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.