首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fit()和fit_predict()在SpectralClustering中有什么区别?

fit()和fit_predict()在SpectralClustering中有什么区别?
EN

Stack Overflow用户
提问于 2019-07-27 17:16:25
回答 2查看 2.9K关注 0票数 4

我正在尝试理解和使用来自雪橇雪橇。假设我们输入了X矩阵,然后创建一个谱聚类对象,如下所示:

代码语言:javascript
复制
clustering = SpectralClustering(n_clusters=2,
         assign_labels="discretize",
         random_state=0)

然后,我们使用光谱聚类对象调用fit_predict。

代码语言:javascript
复制
clusters =  clustering.fit_predict(X)

令我困惑的是,“使用所选的亲和力创建X的亲和矩阵”是什么时候?因为根据文档,fit_predict()方法‘对X执行集群并返回集群标记’。但它并没有明确指出,在聚类之前,它也会使用所选的亲和力计算“X的亲和矩阵”。

我很感谢你的帮助和建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-27 18:17:03

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

使用所选的亲和力创建X的亲和矩阵,然后将谱聚类应用于此亲和矩阵。

fit_predict

对X执行群集并返回群集标签。

在这里,对X的执行聚类应该理解为对fit的描述,即创建一个亲和矩阵.

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

代码语言:javascript
复制
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
票数 6
EN

Stack Overflow用户

发布于 2019-07-27 17:33:59

源代码 of fit_predict()的角度来看,它似乎只是一种方便的方法--它实际上只是调用fit()并从对象返回标签。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57234414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档