ward_tree#

sklearn.cluster.ward_tree(X, *, connectivity=None, n_clusters=None, return_distance=False)#

Ward聚类基于特征矩阵。

递归地合并最小增加簇内方差的簇对。

惯性矩阵使用基于Heapq的表示。

这是结构化版本,考虑了样本之间的一些拓扑结构。

更多信息请参阅 用户指南

Parameters:
X形状为 (n_samples, n_features) 的类数组

表示要聚类的 n_samples 个样本的特征矩阵。

connectivity{类数组, 稀疏矩阵}, 默认=None

连接矩阵。定义每个样本的邻近样本,遵循数据的给定结构。矩阵假设为对称,并且仅使用上三角部分。 默认是 None,即 Ward 算法是无结构的。

n_clustersint, 默认=None

n_clusters 应小于 n_samples 。在 n_clusters 处提前停止树的构建。如果簇的数量不小于样本数量,这有助于减少计算时间。在这种情况下,不计算完整的树,因此 ‘children’ 输出用途有限,应使用 ‘parents’ 输出。此选项仅在指定连接矩阵时有效。

return_distancebool, 默认=False

如果为 True ,返回簇之间的距离。

Returns:
children形状为 (n_nodes-1, 2) 的 ndarray

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

n_connected_componentsint

图中连通分量的数量。

n_leavesint

树中叶子的数量。

parents形状为 (n_nodes,) 的 ndarray 或 None

每个节点的父节点。仅在指定连接矩阵时返回,否则返回 ‘None’。

distances形状为 (n_nodes-1,) 的 ndarray

仅在 return_distance 设置为 True 时返回(为了兼容性)。节点中心之间的距离。 distances[i] 对应于节点 children[i, 1]children[i, 2] 之间的加权欧几里得距离。如果节点指的是树的叶子,则 distances[i] 是它们的非加权欧几里得距离。距离更新如下(来自 scipy.hierarchy.linkage):

新条目 \(d(u,v)\) 计算如下,

\[d(u,v) = \sqrt{\]
rac{|v|+|s|}

{T}d(v,s)^2

rac{|v|+|t|}

{T}d(v,t)^2

rac{|v|}

{T}d(s,t)^2}

其中 \(u\) 是新加入的由簇 \(s\)\(t\) 组成的簇,\(v\) 是森林中未使用的簇,\(T=|v|+|s|+|t|\) ,以及 \(|*|\) 是其参数的基数。这也称为增量算法。

Examples

>>> import numpy as np
>>> from sklearn.cluster import ward_tree
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...               [4, 2], [4, 4], [4, 0]])
>>> children, n_connected_components, n_leaves, parents = ward_tree(X)
>>> children
array([[0, 1],
       [3, 5],
       [2, 6],
       [4, 7],
       [8, 9]])
>>> n_connected_components
1
>>> n_leaves
6