我在理解官方文档here中概述的sklearn.cluster.SpectralClustering
类的特定用例时遇到了麻烦。假设我想使用自己的亲和力矩阵执行聚类。我首先实例化类SpectralClustering
的对象,如下所示:
from sklearn.clustering import SpectralClustering
cl = SpectralClustering(n_clusters=5,affinity='precomputed')
上面的
affinity
参数的文档如下:现在,对象
cl
具有方法fit
,有关其唯一参数X
的文档如下:这就是令人困惑的地方。我正在使用自己的亲和力矩阵,其中的0表示两个点是相同的,数字越大表示两个点之间的相异性越高。但是,参数
affinity
的其他选择实际上是采用一个数据集并生成一个相似度矩阵,对于该矩阵,较高的值表示更多的相似性,而较低的值表示不相似(例如径向基核)。因此,当在我的
fit
实例上使用SpectralClustering
方法时,在将其亲和力矩阵作为参数fit
传递给X
方法调用之前,我真的需要将亲和力矩阵转换为相似性矩阵吗?同一文档页面上有关于将距离转换为行为相似的记录的注释,但未明确指出应在何处执行此步骤以及通过哪种方法调用。 最佳答案
直接来自文档:
np.exp(- X ** 2 / (2. * delta ** 2))
这在您自己的代码中进行,其结果可以传递给
fit
。出于此算法的目的,亲和度表示相似性,而不是距离。关于python - 使用具有参数亲和力='precomputed'的类sklearn.cluster.SpectralClustering,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20530804/