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