使用scikit-learn进行谱聚类的预计算距离

时间:2015-11-18 07:16:33

标签: python-2.7 scikit-learn

我正在努力理解谱聚类文档here

具体地

  

如果您有一个亲和度矩阵,例如距离矩阵,其中0表示相同的元素,而高值表示非常不相似的元素,则可以通过应用高斯的方法将其转换为非常适合算法的相似性矩阵(RBF,热)内核:   np.exp(- X ** 2 / (2. * delta ** 2))

对于我的数据,我有一个大小为(n_samples, n_samples)的完整距离矩阵,其中大条目表示不相似的对,小值表示相似的对,零表示相同的条目。 (即,沿对角线的唯一零点)。

所以我需要做的就是使用SpectralClustering构建affinity = "precomputed"对象,然后将转换后的距离矩阵传递给fit_predict

我坚持建议的转换方程式。 np.exp(- X ** 2 / (2. * delta ** 2))

这里X是什么? (n_samples, n_samples)距离矩阵?

如果是,那么delta是什么。它只是X.max()-X.min()吗?

调用np.exp(- X ** 2 / (2. * (X.max()-X.min()) ** 2))似乎做对了。即大条目变得相对较小,小条目相对较大,所有条目都在0和1之间。对角线都是1,这是有道理的,因为每个点都是最亲密的。

但我很担心。我想如果作者希望我使用np.exp(- X ** 2 / (2. * (X.max()-X.min()) ** 2)),他会告诉我使用它,而不是在那里投掷delta

所以我想我的问题就是这个。什么' delta

1 个答案:

答案 0 :(得分:1)

是的,在这种情况下,X是距离矩阵。 delta是一个缩放参数,您可以根据需要进行调整。它控制了“紧密度”,可以说是距离/相似关系,在某种意义上说,一个小的增量增加了遥远点的相对异常性。

请注意,delta与RBF内核的gamma参数的倒数成正比,前面提到的文档链接中提到了这两个参数:两者都是可用于调整聚类结果的自由参数