0


sklearn笔记:AgglomerativeClustering

1 方法介绍

sklearn.cluster.AgglomerativeClustering(
    n_clusters=2, 
    *, 
    affinity='deprecated', 
    metric=None, 
    memory=None, 
    connectivity=None, 
    compute_full_tree='auto', 
    linkage='ward', 
    distance_threshold=None, 
    compute_distances=False)

2 参数介绍

n_clusters
需要分成几个cluster?

如果distance_threshold不是None,那么n_clusters需要是None'

metric

计算距离的方式

可以是‘euclidean’,‘l1','l2','manhattan','cosine','precomputed'

  • 如果设置为None,那么默认是使用’euclidean‘

  • 如果linkage是’ward‘,那么只有’euclidean‘

  • 如果是'precomputed',那么需要提供一个距离矩阵
    connectivity
    连接矩阵。

  • 为每个样本定义遵循给定数据结构的相邻样本。

  • 这可以是连接矩阵本身,也可以是将数据转换为连接矩阵的可调用对象,例如从 kneighbors_graph 派生的。

  • 默认为None,即层次聚类算法是非结构化的。(所有样本之间都是互相连接的)

compute_full_tree

  • 当已经合并至n_cluster数量的簇之后,停止生成数

  • 这个可以节省计算时间

  • 如果distance_threshold不是None,compute_full_tree必须时True

  • 默认情况下compute_full_tree是’auto’ - 如果distance_threshold 不是None,那么compute_full_tree是True- 如果n_clusters比max(100,0.02*n_samples)小,那么compute_full_tree是True- 其他情况下,compute_full_tree是False
    linkage
    {‘ward’, ‘complete’, ‘average’, ‘single’}, default=’ward’

计算两个簇之间的距离

distance_threshold

  • 两个簇之间的距离大于这个值时,cluster不再合并
  • 如果distance_threshold不是None,那么n_cluster必须是None,compute_full_tree必须是True

3 返回内容

n_clusters_
簇的数量

(如果distance_threshold是None的画,等于给定的N_clusters)
labels_每个样本点的簇labeln_leaves叶子节点的数量children_
官方文档的说法:

  • 每个非叶节点的子节点。 - 小于 n_samples 的值对应于作为原始样本的树的叶子。- 大于或等于 n_samples 的节点 i 是非叶节点,并且有子节点 children_[i - n_samples]。- 或者,在第 i 次迭代中,children[i][0] 和 children[i][1] 合并形成节点 n_samples + i。

4 举例

from sklearn.cluster import AgglomerativeClustering
import numpy as np

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

clustering = AgglomerativeClustering().fit(X)
clustering.labels_
#array([1, 1, 1, 0, 0, 0], dtype=int64)

clustering.children_
'''
array([[0, 1],
       [3, 5],
       [2, 6],
       [4, 7],
       [8, 9]], dtype=int64)
'''

这里的children怎么理解呢?

  • 原来有0,1,2,3,4,5,一共六个叶子节点
  • 第一行[0,1]——>[0],[1]两个叶子节点(两个簇)合并,成为6号非叶节点
  • 第二行[3,5]——>[3],[5]两个叶子节点(两个簇)合并,成为7号非叶节点
  • 第三行[2,6]——>叶子节点[2]和非叶节点[6]([0,1])合并,成为8号非叶节点(0,1,2)
  • 第四行[4,7]——>叶子节点[4]和非叶节点[7]([3,5])合并,成为9号非叶节点(3,4,5)
  • 第五行[8,9]——>非叶节点[8](0,1,2)和非叶节点[9](3,4,5)合并

本文转载自: https://blog.csdn.net/qq_40206371/article/details/129868310
版权归原作者 UQI-LIUWJ 所有, 如有侵权,请联系我们删除。

“sklearn笔记:AgglomerativeClustering”的评论:

还没有评论