Buscar..


Introducción

El paquete de stats proporciona la función hclust para realizar la agrupación jerárquica.

Observaciones

Además de hclust, hay otros métodos disponibles, consulte la Vista del paquete CRAN en Clustering .

Ejemplo 1 - Uso básico de hclust, visualización de dendrograma, agrupamientos de parcelas

La biblioteca de clústeres contiene los datos ruspini, un conjunto estándar de datos para ilustrar el análisis de clústeres.

    library(cluster)                ## to get the ruspini data
    plot(ruspini, asp=1, pch=20)    ## take a look at the data

Ruspini Data

hclust espera una matriz de distancia, no los datos originales. Calculamos el árbol utilizando los parámetros predeterminados y lo mostramos. El parámetro de colgar alinea todas las hojas del árbol a lo largo de la línea de base.

    ruspini_hc_defaults <- hclust(dist(ruspini))
    dend <- as.dendrogram(ruspini_hc_defaults)
    if(!require(dendextend)) install.packages("dendextend"); library(dendextend)
    dend <- color_branches(dend, k = 4) 
    plot(dend)

introduzca la descripción de la imagen aquí

Corte el árbol para dar cuatro grupos y vuelva a trazar los datos coloreando los puntos por grupo. k es el número deseado de grupos.

    rhc_def_4 = cutree(ruspini_hc_defaults,k=4)
    plot(ruspini, pch=20, asp=1, col=rhc_def_4)

Datos de Ruspini - primer agrupamiento

Este agrupamiento es un poco extraño. Podemos obtener un mejor agrupamiento agrupando los datos primero.

    scaled_ruspini_hc_defaults = hclust(dist(scale(ruspini)))
    srhc_def_4 = cutree(scaled_ruspini_hc_defaults,4)
    plot(ruspini, pch=20, asp=1, col=srhc_def_4)

Datos de Ruspini escalados - agrupados

La medida de disimilitud predeterminada para comparar clústeres es "completa". Puede especificar una medida diferente con el parámetro del método.

    ruspini_hc_single = hclust(dist(ruspini), method="single")

Ejemplo 2 - hclust y valores atípicos

Con la agrupación jerárquica, los valores atípicos a menudo aparecen como agrupaciones de un punto.

Genere tres distribuciones gaussianas para ilustrar el efecto de los valores atípicos.

    set.seed(656)
    x = c(rnorm(150, 0, 1), rnorm(150,9,1), rnorm(150,4.5,1))
    y = c(rnorm(150, 0, 1), rnorm(150,0,1), rnorm(150,5,1))
    XYdf = data.frame(x,y)
    plot(XYdf, pch=20)

Datos de prueba

Construye la estructura del cluster, divídelo en tres cluster.

    XY_sing = hclust(dist(XYdf), method="single")
    XYs3 = cutree(XY_sing,k=3)
    table(XYs3)
    XYs3
      1   2   3 
    448   1   1 

hclust encontró dos valores atípicos y puso todo lo demás en un gran grupo. Para obtener los clústeres "reales", es posible que deba establecer k más alto.

    XYs6 = cutree(XY_sing,k=6)
    table(XYs6)
    XYs6
      1   2   3   4   5   6 
    148 150   1 149   1   1 
    plot(XYdf, pch=20, col=XYs6)

Datos de prueba agrupados: 3 valores atípicos y 3 grupos grandes

Esta publicación de StackOverflow tiene algunas pautas sobre cómo elegir el número de clústeres, pero tenga en cuenta este comportamiento en el clúster jerárquico.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow