sklearn 如何计算谱聚类的最近邻亲和矩阵?

How does sklearn compute nearest-neighbor affinity matrix for spectral clustering?

天真地,如果我将最近邻居的数量指定为 k,那么对于每个节点,它会伸出手寻找最近的 k 个节点并将它们的亲和力指定为 1。

但是,我观察到sklearn谱聚类最近邻生成的亲和矩阵不只包含0和1。是因为最近邻居列表中可能存在联系吗?所以我将 1/n 分配给 n 个同样接近的相邻节点?

sklearn spectral clustering "nearest neighbor" 选项计算出的亲和矩阵中的值为 0、1/2 和 1。

值0和1很容易理解,但是1/2项是怎么产生的呢?

注意k近邻的概念对于两个节点是非对称的,因此,使用k近邻得到的亲和矩阵A是非对称的。但是谱聚类使用的相似度矩阵是对称的,因此谱聚类取A和A.T.

的平均值

1/2 值来自 A 中的不对称元素。