光谱聚类中fit()和fit_predict()有什么区别

2024-05-23 20:47:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解并使用来自sklearnspectral clustering。 假设我们有X矩阵输入,我们创建了一个光谱聚类对象,如下所示:

clustering = SpectralClustering(n_clusters=2,
         assign_labels="discretize",
         random_state=0)

然后,我们使用光谱簇对象调用拟合预测。在

^{pr2}$

让我困惑的是,“使用所选关联的X的关联矩阵是何时创建的”?因为根据文件 fit_predict()方法'对X执行聚类并返回聚类标签',但它并没有明确说明在聚类之前它还计算“使用所选关联的X的关联矩阵”。在

我很感激任何帮助或提示。在


Tags: 对象labels矩阵光谱聚类randomsklearnclusters
2条回答

看看fit_predict()source code似乎这只是一个方便的方法——它实际上只是调用fit()并从对象返回标签。在

正如在另一个答案中已经暗示的那样,fit_predict只是返回集群标签的一个方便方法。根据documentationfit

Creates an affinity matrix for X using the selected affinity, then applies spectral clustering to this affinity matrix.

fit_predict

Performs clustering on X and returns cluster labels.

这里,在X上执行集群应该理解为fit的描述,即,创建一个亲和矩阵[…]。在

不难验证调用fit_predict等同于从fit之后的对象获取labels_属性;使用一些伪数据,我们

from sklearn.cluster import SpectralClustering
import numpy as np

X = np.array([[1, 2], [1, 4], [10, 0],
               [10, 2], [10, 4], [1, 0]])

# 1st way - use fit and get the labels_
clustering = SpectralClustering(n_clusters=2,
     assign_labels="discretize",
     random_state=0)

clustering.fit(X)
clustering.labels_
# array([1, 1, 0, 0, 0, 1])

# 2nd way - using fit_predict
clustering2 = SpectralClustering(n_clusters=2,
     assign_labels="discretize",
     random_state=0)

clustering2.fit_predict(X)
# array([1, 1, 0, 0, 0, 1])

np.array_equal(clustering.labels_, clustering2.fit_predict(X))
# True

相关问题 更多 >