我无法理解的具体使用情况sklearn.cluster.SpectralClustering
作为官方文档中列出类在这里.假设我想使用自己的亲和矩阵来执行聚类.我首先实例化一个类的对象,SpectralClustering
如下所示:
from sklearn.clustering import SpectralClustering cl = SpectralClustering(n_clusters=5,affinity='precomputed')
上述affinity
参数的文档如下:
affinity:string,array-like或callable,默认为'rbf'
如果是字符串,则可以是"nearest_neighbors","precomputed","rbf"或sklearn.metrics.pairwise_kernels支持的某个内核之一.只应使用产生相似性得分的内核(非相似性增加的负值).群集算法不会检查此属性.
现在该对象cl
有一个方法fit
,其唯一参数的文档X
如下:
X:类似数组或稀疏矩阵,形状(n_samples,n_features)
OR,如果affinity ==,则为
precomputed
预先计算的形状亲和度矩阵(n_samples,n_samples)
这是令人困惑的地方.我正在使用我自己的亲和度矩阵,其中度量为0表示两个点相同,数字越大意味着两个点更不相似.然而,参数的其他选择affinity
实际上采用数据集并产生相似性矩阵,其中较高的值表示更多的相似性,而较低的值表示不相似性(例如径向基础核).
因此,当fit
在我的实例上使用该方法时,我SpectralClustering
是否真的需要将亲和度矩阵转换为相似性矩阵,然后将其fit
作为参数传递给方法调用X
?相同的文档页面记录了将距离转换为行为良好的相似性,但未明确指出应该执行此步骤的位置,以及通过哪种方法调用.