Ricerca…


introduzione

Il pacchetto stats fornisce la funzione hclust per eseguire il clustering gerarchico.

Osservazioni

Oltre a hclust, sono disponibili altri metodi, vedere la Vista pacchetto CRAN su Clustering .

Esempio 1 - Uso di base di hclust, visualizzazione di dendrogramma, cluster di trama

La libreria cluster contiene i dati ruspini: un set standard di dati per illustrare l'analisi del cluster.

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

Dati Ruspini

hclust si aspetta una matrice di distanza, non i dati originali. Calcoliamo l'albero usando i parametri di default e mostrandolo. Il parametro di blocco allinea tutte le foglie dell'albero lungo la linea di 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)

inserisci la descrizione dell'immagine qui

Taglia l'albero per dare quattro grappoli e riempi i dati colorando i punti per cluster. k è il numero desiderato di cluster.

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

Dati Ruspini: primo clustering

Questo raggruppamento è un po 'strano. Possiamo ottenere un clustering migliore scalando prima i dati.

    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)

Dati in scala Ruspini - raggruppati

La misura di dissomiglianza predefinita per il confronto dei cluster è "completa". È possibile specificare una misura diversa con il parametro metodo.

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

Esempio 2 - hclust e valori anomali

Con il clustering gerarchico, i valori anomali si presentano spesso come cluster a un punto.

Generare tre distribuzioni gaussiane per illustrare l'effetto dei valori anomali.

    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)

Dati di test

Costruisci la struttura del cluster, dividerla in tre cluster.

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

Ho trovato due valori anomali e ho messo tutto il resto in un unico grande cluster. Per ottenere i cluster "reali", potrebbe essere necessario impostare k più 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)

Dati di prova raggruppati - 3 valori anomali e 3 grandi cluster

Questo post di StackOverflow ha alcune indicazioni su come scegliere il numero di cluster, ma tenere presente questo comportamento nel clustering gerarchico.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow