我正在尝试从sklearn进行光谱聚类,并设置最佳聚类数,我想使用本文建议的方法"自调整光谱聚类" (在NIPS上发表)。这种方法需要特征值和特征向量,我意识到sklearn谱聚类不能提供它。
有没有办法从sklearn谱聚类中获取特征值和特征向量?
这是纸bibtex
@article{zelnik2005self,
title={Self-tuning spectral clustering},
author={Zelnik-Manor, Lihi and Perona, Pietro},
year={2005},
publisher={MIT Press}
}
答案 0 :(得分:1)
就像@ anony-mousse所说,你可以在源代码中找到它。
在sklearn\cluster\spectral.py
中的sklean源代码内,有这一行:
maps = spectral_embedding(affinity...
maps
包含特征向量。默认情况下,spectral_embedding
仅输出特征向量,但您可以修改它以输出特征值(通常命名为lambdas
)。您也可以使用您选择的本征解析器从亲和力矩阵中自行计算它们。
答案 1 :(得分:1)
如果您查看以下源文件:
然后
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。