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’
|
connectivity | 连接矩阵。
|
compute_full_tree |
|
linkage | {‘ward’, ‘complete’, ‘average’, ‘single’}, default=’ward’ 计算两个簇之间的距离 |
distance_threshold |
|
3 返回内容
n_clusters_ | 簇的数量 (如果distance_threshold是None的画,等于给定的N_clusters) |
labels_ | 每个样本点的簇label |
n_leaves | 叶子节点的数量 |
children_ | 官方文档的说法:
|
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)合并
文章出处登录后可见!
已经登录?立即刷新