[英]What is the difference between fit() and fit_predict() in SpectralClustering
我正在尝试了解和使用sklearn的光谱聚类 。 假设我们有X矩阵输入,并且创建了一个光谱聚类对象,如下所示:
clustering = SpectralClustering(n_clusters=2,
assign_labels="discretize",
random_state=0)
然后,我们使用频谱聚类对象调用fit_predict。
clusters = clustering.fit_predict(X)
令我感到困惑的是,何时“创建了使用所选亲和力的X的亲和力矩阵”? 因为根据文档, fit_predict()方法“在X上执行聚类并返回聚类标签”。 但是,它没有明确表示在聚类之前它还会计算“使用所选亲和力的X亲和力矩阵”。
感谢您的帮助或提示。
查看fit_predict()
源代码 ,看来这只是一种便捷方法-实际上只是调用fit()
并从对象返回标签。
正如另一个答案中已经暗示的那样, fit_predict
只是返回簇标签的一种便捷方法。 根据文档 , fit
使用选定的亲和力为X创建一个亲和力矩阵,然后将光谱聚类应用于此亲和力矩阵。
而fit_predict
在X上执行聚类并返回聚类标签。
在这里, 在X上执行聚类应该理解为fit
描述的内容,即创建亲和度矩阵[...] 。
这是不难验证调用fit_predict
相当于获得labels_
后从对象属性fit
; 使用一些虚拟数据,我们有
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.