ward_tree#

sklearn.cluster.ward_tree(X, *, связность=None, n_clusters=None, return_distance=False)[источник]#

Кластеризация Уорда на основе матрицы признаков.

Рекурсивно объединяет пару кластеров, которая минимально увеличивает внутрикластерную дисперсию.

Матрица инерции использует представление на основе Heapq.

Это структурированная версия, которая учитывает некоторую топологическую структуру между выборками.

Подробнее в Руководство пользователя.

Параметры:
Xarray-like формы (n_samples, n_features)

Матрица признаков, представляющая n_samples образцы для кластеризации.

связность{array-like, sparse matrix}, по умолчанию=None

Матрица связности. Определяет для каждого образца соседние образцы в соответствии с заданной структурой данных. Предполагается, что матрица симметрична, и используется только верхняя треугольная половина. По умолчанию None, т.е. алгоритм Уорда не структурирован.

n_clustersint, default=None

n_clusters должно быть меньше n_samples. Остановить построение дерева раньше на n_clusters. Это полезно для уменьшения времени вычислений, если количество кластеров не мало по сравнению с количеством образцов. В этом случае полное дерево не вычисляется, поэтому выход 'children' имеет ограниченное использование, и выход 'parents' следует использовать вместо этого. Эта опция действительна только при указании матрицы связности.

return_distancebool, по умолчанию=False

Если True, вернуть расстояние между кластерами.

Возвращает:
дочерние элементыndarray формы (n_nodes-1, 2)

Дочерние элементы каждого нелистового узла. Значения меньше n_samples соответствуют листьям дерева, которые являются исходными образцами. Узел i больше или равно n_samples является нелистовым узлом и имеет дочерние узлы children_[i - n_samples]. Альтернативно, на i-й итерации children[i][0] и children[i][1] объединяются, чтобы сформировать узел n_samples + i.

n_connected_componentsint

Количество связных компонент в графе.

n_leavesint

Количество листьев в дереве.

родителиndarray формы (n_nodes,) или None

Родитель каждого узла. Возвращается только когда указана матрица связности, в противном случае возвращается 'None'.

расстоянияndarray формы (n_nodes-1,)

Возвращается только если return_distance установлено в True (для совместимости). Расстояния между центрами узлов. distances[i] соответствует взвешенному евклидову расстоянию между узлами children[i, 1] и children[i, 2]. Если узлы ссылаются на листья дерева, то distances[i] — их невзвешенное евклидово расстояние. Расстояния обновляются следующим образом (из scipy.hierarchy.linkage):

Новая запись \(d(u,v)\) вычисляется следующим образом,

\[d(u,v) = \sqrt{\frac{|v|+|s|} {T}d(v,s)^2 + \frac{|v|+|t|} {T}d(v,t)^2 - \frac{|v|} {T}d(s,t)^2}\]

где \(u\) — это новый объединенный кластер, состоящий из кластеров \(s\) и \(t\), \(v\) является неиспользуемым кластером в лесу, \(T=|v|+|s|+|t|\), и \(|*|\) является мощностью его аргумента. Это также известно как инкрементальный алгоритм.

Примеры

>>> 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