如何从sklearn谱聚类中获得特征值和特征向量?

时间:2016-12-15 05:55:14

标签: python scikit-learn cluster-analysis

我正在尝试从sklearn进行光谱聚类,并设置最佳聚类数,我想使用本文建议的方法"自调整光谱聚类" (在NIPS上发表)。这种方法需要特征值和特征向量,我意识到sklearn谱聚类不能提供它。

有没有办法从sklearn谱聚类中获取特征值和特征向量?

这是纸bibtex

@article{zelnik2005self,
  title={Self-tuning spectral clustering},
  author={Zelnik-Manor, Lihi and Perona, Pietro},
  year={2005},
  publisher={MIT Press}
}

2 个答案:

答案 0 :(得分:1)

就像@ anony-mousse所说,你可以在源代码中找到它。

sklearn\cluster\spectral.py中的sklean源代码内,有这一行:

maps = spectral_embedding(affinity...

maps包含特征向量。默认情况下,spectral_embedding仅输出特征向量,但您可以修改它以输出特征值(通常命名为lambdas)。您也可以使用您选择的本征解析器从亲和力矩阵中自行计算它们。

答案 1 :(得分:1)

如果您查看以下源文件:

This

然后

https://github.com/scikit-learn/scikit-learn/blob/f0ab589f/sklearn/cluster/spectral.py#L259

您最终可以看到,一种计算特征值/向量的方法是

lambdas, diffusion_map = eigh(laplacian)

在这里,eigh指的是源文件顶部提到的https://github.com/scikit-learn/scikit-learn/blob/f0ab589f/sklearn/manifold/spectral_embedding_.py#L308