SpectralClustering 中的 fit() 和 fit_predict() 有什么区别
What is the difference between fit() and fit_predict() in SpectralClustering
我正在尝试理解和使用 spectral clustering from sklearn。
假设我们有 X 矩阵输入,我们创建一个光谱聚类对象如下:
clustering = SpectralClustering(n_clusters=2,
assign_labels="discretize",
random_state=0)
然后,我们使用光谱簇对象调用fit_predict。
clusters = clustering.fit_predict(X)
让我困惑的是 'the affinity matrix for X using the selected affinity is created' 什么时候?因为根据文档
fit_predict() 方法 'Performs clustering on X and returns cluster labels.' 但它没有明确说它在聚类之前也计算 'the affinity matrix for X using the selected affinity'.
感谢任何帮助或提示。
查看 fit_predict()
的 source code 似乎这只是一种方便的方法 - 它实际上只是从对象调用 fit()
和 returns 标签。
正如另一个答案中已经暗示的那样,fit_predict
只是 return 集群标签的一种便捷方法。根据documentation、fit
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
我正在尝试理解和使用 spectral clustering from sklearn。 假设我们有 X 矩阵输入,我们创建一个光谱聚类对象如下:
clustering = SpectralClustering(n_clusters=2,
assign_labels="discretize",
random_state=0)
然后,我们使用光谱簇对象调用fit_predict。
clusters = clustering.fit_predict(X)
让我困惑的是 'the affinity matrix for X using the selected affinity is created' 什么时候?因为根据文档 fit_predict() 方法 'Performs clustering on X and returns cluster labels.' 但它没有明确说它在聚类之前也计算 'the affinity matrix for X using the selected affinity'.
感谢任何帮助或提示。
查看 fit_predict()
的 source code 似乎这只是一种方便的方法 - 它实际上只是从对象调用 fit()
和 returns 标签。
正如另一个答案中已经暗示的那样,fit_predict
只是 return 集群标签的一种便捷方法。根据documentation、fit
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