Spec-Zone.ru › scikit-learn

ward_tree

sklearn.cluster.ward_tree(X, *, connectivity=None, n_clusters=None, return_distance=False)[source]

Алгоритм кластеризации Уорда, основанный на матрице признаков.

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

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

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

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

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

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

connectivity{array-like, sparse matrix}, default=None

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

n_clustersint, default=None

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

return_distancebool, default=False

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

Возвращаемые значения:
childrenndarray of shape (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

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

parentsndarray of shape (n_nodes,) or None

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

distancesndarray of shape (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

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.cluster.ward_tree.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API