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 nodoi
mayor o igual quen_samples
es un nodo no hoja y tiene hijoschildren_[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 nodon_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 nodoschildren[i, 1]
ychildren[i, 2]
. Si los nodos se refieren a las hojas del árbol, entoncesdistancias[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.