scikit-learn 中的 SpectralClustering 与 Spectral_clustering
Posted
技术标签:
【中文标题】scikit-learn 中的 SpectralClustering 与 Spectral_clustering【英文标题】:SpectralClustering vs. spectral_clustering in scikit-learn 【发布时间】:2019-09-04 07:26:14 【问题描述】:我注意到 sklearn.cluster 库中有两个不同的谱聚类函数:SpectralClustering 和 spectral_clustering。尽管它们在某些细节上有所不同,但都进行了谱聚类,并且它们的大多数参数重叠。我很困惑为什么sklearn中有两种方法如此相似?
我注意到的一些差异:
在 SpectralClustering 中,参数affinity
接受字符串和数组;它的默认值为'rbf'
;在spectral_clustering中它只能是一个矩阵
SpectralClustering() 像构造函数一样工作。它不返回任何内容,但有两个属性affinity_matrix_
(您可以在调用.fit() 后访问)和labels_
。 Spectrum_clustering 是一种只返回标签的方法。
使用 SpectralClustering:
cluster=SpectralClustering().fit(X)
cluster.labels_
使用spectral_clustering:
labels=spectral_clustering(affinity_matrix)
尽管存在这些明显的差异,但我想知道这两种方法是否在基本方面有所不同。否则为什么有两种方法可以完成基本相同的事情?
【问题讨论】:
【参考方案1】:你检查源代码了吗?
我希望SpectralClustering
是命令式方法spectral_clustering
的面向对象包装器。
【讨论】:
谢谢你提醒我看源代码。你是绝对正确的。SpectralClustering
基本上是自己计算亲和矩阵,然后调用spectral_clustering(Affinity_Matrix)
。以上是关于scikit-learn 中的 SpectralClustering 与 Spectral_clustering的主要内容,如果未能解决你的问题,请参考以下文章