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的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn 中的 DBSCAN(仅使用指标)

scikit-learn 中的不平衡

混淆矩阵中的 Scikit-learn 变化阈值

GradientBoostingClassifier 与 scikit-learn 中的 BaseEstimator?

如何修复 scikit-learn 中的令牌模式?

scikit-learn 中的测试集分区