gpt4 book ai didi

python - 使用具有参数亲和性 ='precomputed' 的类 sklearn.cluster.SpectralClustering

转载 作者:太空狗 更新时间:2023-10-30 00:03:04 24 4
gpt4 key购买 nike

我无法理解官方文档中概述的 sklearn.cluster.SpectralClustering 类的特定用例 here .假设我想使用自己的亲和性矩阵来执行聚类。我首先实例化类 SpectralClustering 的对象,如下所示:

from sklearn.clustering import SpectralClustering

cl = SpectralClustering(n_clusters=5,affinity='precomputed')

上面affinity参数的文档如下:

affinity : string, array-like or callable, default ‘rbf’

If a string, this may be one of ‘nearest_neighbors’, ‘precomputed’, ‘rbf’ or one of the kernels supported by sklearn.metrics.pairwise_kernels. Only kernels that produce similarity scores (non-negative values that increase with similarity) should be used. This property is not checked by the clustering algorithm.

现在对象 cl 有一个方法 fit ,关于它的唯一参数 X 的文档如下:

X : array-like or sparse matrix, shape (n_samples, n_features)

OR, if affinity==precomputed, a precomputed affinity matrix of shape (n_samples, n_samples)

这就是令人困惑的地方。我正在使用自己的亲和性矩阵,其中 0 表示两个点相同,数字越大表示两个点越不相似。但是,参数 affinity 的其他选择实际上采用数据集并生成相似度 矩阵,较高 值表示更相似, 和较低值表示不相似(例如径向基核)。

因此,当在我的 SpectralClustering 实例上使用 fit 方法时,我是否真的需要在将亲和矩阵传递给 之前将其转换为相似矩阵fit 方法调用作为参数 X?同一个文档页面记录了将距离转换为行为良好的相似性,但没有明确指出应该在哪里执行此步骤,以及通过哪个方法调用。

最佳答案

直接来自文档:

If you have an affinity matrix, such as a distance matrix, for which 0 means identical elements, and high values means very dissimilar elements, it can be transformed in a similarity matrix that is well suited for the algorithm by applying the Gaussian (RBF, heat) kernel:

np.exp(- X ** 2 / (2. * delta ** 2))

这将进入您自己的代码,并且其结果可以传递给 fit。就本算法而言,亲和性意味着相似性,而不是距离。

关于python - 使用具有参数亲和性 ='precomputed' 的类 sklearn.cluster.SpectralClustering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20530804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com