sklearn.cluster.ward_tree

sklearn.cluster.ward_tree()

Agrupamiento de Ward basado en una matriz de características.

Fusiona recursivamente el par de conglomerados que aumenta mínimamente la varianza dentro del conglomerado.

La matriz de inercia utiliza una representación basada en Heapq.

Esta es la versión estructurada, que tiene en cuenta cierta estructura topológica entre las muestras.

Más información en el Manual de usuario.

Parámetros
Xarray-like de forma (n_samples, n_features)

matriz de características que representa n_samples muestras a agrupar

connectivitymatriz dispersa, default=None

matriz de conectividad. Define para cada muestra las muestras de vecindario siguiendo una estructura determinada de los datos. Se supone que la matriz es simétrica y sólo se utiliza la mitad triangular superior. Por defecto es None, es decir, el algoritmo de Ward no tiene estructura.

n_clustersint, default=None

Detener anticipadamente la construcción del árbol en n_clusters. Esto es útil para reducir el tiempo de cálculo si el número de conglomerados no es pequeño en comparación con el número de muestras. En este caso, no se calcula el árbol completo, por lo que la salida de “children” tiene una utilidad limitada, y debería utilizarse más bien la salida de “parents”. Esta opción sólo es válida cuando se especifica una matriz de conectividad.

return_distancebool, default=None

Si es True, devuelve la distancia entre los conglomerados.

Devuelve
childrenndarray de forma (n_nodes-1, 2)

Los hijos de cada nodo que no es hoja. Los valores inferiores a n_samples corresponden a las hojas del árbol que son las muestras originales. Un nodo i mayor o igual que n_samples es un nodo no hoja y tiene hijos children_[i - n_samples]. Como alternativa, en la iteración i-th, los hijos[i][0] y los hijos[i][1] se fusionan para formar el nodo n_samples + i

n_connected_componentsint

El número de componentes conectados en el grafo.

n_leavesint

El número de hojas en el árbol

parentsndarray de forma (n_nodes,) o None

El padre de cada nodo. Sólo se devuelve cuando se especifica una matriz de conectividad, en caso contrario se devuelve “None”.

distancesndarray de forma (n_nodes-1,)

Sólo se devuelve si return_distance se establece en True (para compatibilidad). Las distancias entre los centros de los nodos. distances[i] corresponden a una distancia euclidiana ponderada entre los nodos children[i, 1] y children[i, 2]. Si los nodos se refieren a las hojas del árbol, entonces distancias[i] es su distancia euclidiana no ponderada. Las distancias se actualizan de la siguiente manera (de scipy.hierarchy.linkage):

La nueva entrada \(d(u,v)\) se calcula de la siguiente manera,

\[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}\]

donde \(u\) es el conglomerado recién unido que consiste en conglomerados \(s\) y \(t\), \(v\) es un conglomerado no utilizado en el bosque, \(T=|v|+|s|+|t|\), y \(|*|\) es la cardinalidad de su argumento. Esto también se conoce como el algoritmo incremental.