ewa*_*lel 4 python cluster-analysis machine-learning python-3.x scikit-learn
我正在尝试理解和使用sklearn的谱聚类。假设我们有 X 矩阵输入,并且我们创建一个谱聚类对象,如下所示:
clustering = SpectralClustering(n_clusters=2,
assign_labels="discretize",
random_state=0)
Run Code Online (Sandbox Code Playgroud)
然后,我们使用谱簇对象调用 fit_predict。
clusters = clustering.fit_predict(X)
Run Code Online (Sandbox Code Playgroud)
让我困惑的是,“使用所选亲和力的 X 的亲和力矩阵何时创建”?因为根据文档, fit_predict()方法“在 X 上执行聚类并返回聚类标签”。但它并没有明确表示它还在聚类之前计算“使用所选亲和力的 X 的亲和力矩阵”。
我感谢任何帮助或提示。
正如另一个答案中已经暗示的那样,fit_predict
这只是返回集群标签的一种便捷方法。根据文档,fit
使用选定的亲和度创建 X 的亲和度矩阵,然后将谱聚类应用于此亲和度矩阵。
尽管fit_predict
对 X 执行聚类并返回聚类标签。
这里,对 X 执行聚类应该理解为 的描述fit
,即创建亲和力矩阵 [...]。
不难验证,调用fit_predict
相当于labels_
从 after 的对象中获取属性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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3569 次 |
最近记录: |