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