SciPy – Dendograma de jerarquía de clústeres

En este artículo, aprenderemos sobre el dendrograma de jerarquía de clústeres utilizando el módulo Scipy en python. Para esto primero discutiremos algunos conceptos relacionados que son los siguientes:

Agrupación jerárquica

La agrupación jerárquica requiere la creación de grupos que tengan un orden predeterminado de arriba a abajo. Es un tipo de algoritmo de aprendizaje automático no supervisado que se utiliza para agrupar puntos de datos no etiquetados. 

¿Cómo realizar?

  1. Cada punto de datos debe tratarse como un grupo al principio.
  2. Denote el número de grupos al principio como K.
  3. Forme un grupo combinando los dos puntos de datos más cercanos que dan como resultado grupos K-1.
  4. Forme más grupos combinando los dos grupos más cercanos que dan como resultado grupos K-2.
  5. Repita los cuatro pasos anteriores hasta que se cree un solo grupo grande.
  6. Los dendogramas se utilizan para dividir en múltiples grupos tan pronto como se crea un grupo.

Tipos de agrupamiento jerárquico

1. Agrupamiento divisivo

El agrupamiento divisivo, también conocido como el método de agrupamiento de arriba hacia abajo, asigna todas las observaciones a un solo grupo y luego divide el grupo en dos grupos menos similares.

2. Agrupamiento aglomerativo

En el método de agrupamiento aglomerativo o de abajo hacia arriba, cada observación se asigna a su propio grupo.

Algoritmos

1. Enlace único

El agrupamiento de un solo enlace a menudo produce grupos en los que los individuos se agregan secuencialmente a un solo grupo. La distancia entre los dos grupos se define como la distancia entre sus dos puntos de datos más cercanos.

L(a , b) = min(D(xai , xbj)) 

2. Enlace completo

La agrupación de enlaces completos generalmente produce grupos que están bien segregados y son compactos. La distancia entre los dos grupos se define como la distancia más larga entre dos puntos de datos en cada grupo.

L(a , b) = max(D(xai , xbj))

   

3. Promedio simple

El algoritmo de promedio simple define la distancia entre grupos como la distancia promedio entre cada uno de los miembros, ponderada de modo que los dos grupos tengan la misma influencia en el resultado final.

L(a , b) = Tab / ( Na * Nb)
Tab: The sum of all pairwise distances between the two clusters.
Na and Nb: The sizes of the clusters a and b, respectively.

   

Dendograma

Un dendrograma es un diagrama en forma de árbol que se utiliza para visualizar la relación entre grupos. Cuanto mayor sea la distancia de las líneas verticales en el dendrograma, mayor será la distancia entre esos grupos. La clave para interpretar un dendograma es concentrarse en la altura a la que se unen dos objetos cualesquiera.

Ejemplo de un dendograma:

Supongamos que tenemos seis conglomerados: P, Q, R, S, T y U. El dendrograma de jerarquía de conglomerados de estas seis observaciones que se muestran en el diagrama de dispersión es:

Dendrograma del diagrama de dispersión dado

Partes de un dendograma:

Partes de un dendograma

  • Las ramas del dendrograma se denominan clados. Estos clados se organizan según lo similares o diferentes que sean.
  • Cada clado del dendrograma tiene una o más hojas. P, Q, R, S, T y U son hojas del dendrograma:
    • Triple (trifolio): P, Q, R
    • Doble (bifolio): S, T
    • Soltero (simplicifolius): U

Implementación de agrupamiento jerárquico y trazado de dendrograma

Para implementar el agrupamiento jerárquico y el trazado del dendrograma, utilizaremos algunos métodos que son los siguientes:

  • Las funciones para el agrupamiento jerárquico y aglomerativo son proporcionadas por el módulo de jerarquía .
  • Para realizar el agrupamiento jerárquico, se utiliza la función scipy.cluster.hierarchy.linkage . Los parámetros de esta función son:

Sintaxis: scipy.cluster.hierarchy.linkage(ndarray , method , metric , optimal_ordering)

  • Para trazar el agrupamiento jerárquico como un dendrograma , se utiliza la función scipy.cluster.hierarchy.dendrogram .

Sintaxis: scipy.cluster.hierarchy.dendrogram(Z , p , truncate_mode , color_threshold , get_hojas , orientación , etiquetas , count_sort , distance_sort , show_leaf_counts , no_plot , no_labels , leaf_font_size , leaf_rotation , leaf_label_func , show_contracted , link_color_func, above , axe)

Ejemplo 1: Dendograma Normal

Python

# Python program to plot the hierarchical
# clustering dendrogram using SciPy
 
# Import the python libraries
import numpy as np
from scipy.cluster import hierarchy
import matplotlib.pyplot as plt
 
# Create an array
x = np.array([100., 200., 300., 400., 500., 250.,
              450., 280., 450., 750.])
 
# Plot the hierarchical clustering as a dendrogram.
temp = hierarchy.linkage(x, 'single')
plt.figure()
 
dn = hierarchy.dendrogram(
    temp, above_threshold_color="green", color_threshold=.7)

Producción:

Ejemplo 2: Dendograma usando orientación horizontal:

Python

# Plot the dendrogram in horizontal orientation
 
# Import the python libraries
import numpy as np
from scipy.cluster import hierarchy
import matplotlib.pyplot as plt
 
# Create an array
x = np.array([100., 200., 300., 400., 500., 250.,
              450., 280., 450., 750.])
 
# Plot the hierarchical clustering as a dendrogram.
temp = hierarchy.linkage(x, 'single')
plt.figure()
dn = hierarchy.dendrogram(
    temp, above_threshold_color="green", color_threshold=.7, orientation='right')

Producción:

La orientación del parámetro de scipy.cluster.hierarchy.dendrogram se ha establecido en ‘right’ . Traza la raíz a la derecha y traza los enlaces descendientes hacia la izquierda.

Publicación traducida automáticamente

Artículo escrito por shubhikagarg1999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *