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–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.cluster.ward_tree.html