Fork me on GitHub


sklearn.cluster.ward_tree(X, connectivity=None, n_components=None, copy=None, n_clusters=None)

Ward clustering based on a Feature matrix.

Recursively merges the pair of clusters that minimally increases within-cluster variance.

The inertia matrix uses a Heapq-based representation.

This is the structured version, that takes into account some topological structure between samples.


X : array, shape (n_samples, n_features)

feature matrix representing n_samples samples to be clustered

connectivity : sparse matrix (optional).

connectivity matrix. Defines for each sample the neighboring samples following a given structure of the data. The matrix is assumed to be symmetric and only the upper triangular half is used. Default is None, i.e, the Ward algorithm is unstructured.

n_components : int (optional)

Number of connected components. If None the number of connected components is estimated from the connectivity matrix.

n_clusters : int (optional)

Stop early the construction of the tree at n_clusters. This is useful to decrease computation time if the number of clusters is not small compared to the number of samples. In this case, the complete tree is not computed, thus the ‘children’ output is of limited use, and the ‘parents’ output should rather be used. This option is valid only when specifying a connectivity matrix.


children : 2D array, shape (n_nodes, 2)

The children of each non-leaf node. Values less than n_samples refer to leaves of the tree. A greater value i indicates a node with children children[i - n_samples].

n_components : int

The number of connected components in the graph.

n_leaves : int

The number of leaves in the tree

parents : 1D array, shape (n_nodes, ) or None

The parent of each node. Only returned when a connectivity matrix is specified, elsewhere ‘None’ is returned.