Zoeken…


Invoering

Het stats biedt de hclust functie om hiërarchische clustering uit te voeren.

Opmerkingen

Naast hclust zijn er nog andere methoden beschikbaar, zie de CRAN Package View over Clustering .

Voorbeeld 1 - Basisgebruik van hclust, weergave van dendrogram, plotclusters

De clusterbibliotheek bevat de ruspini-gegevens - een standaardset gegevens ter illustratie van clusteranalyse.

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

Ruspini-gegevens

hclust verwacht een afstandsmatrix, niet de originele gegevens. We berekenen de boom met behulp van de standaardparameters en geven deze weer. De hang-parameter lijnt alle bladeren van de boom langs de basislijn uit.

    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)

voer hier de afbeeldingsbeschrijving in

Snijd de boom om vier clusters te geven en vul de gegevens opnieuw in waarbij de punten per cluster worden ingekleurd. k is het gewenste aantal clusters.

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

Ruspini-gegevens - eerste clustering

Deze clustering is een beetje vreemd. We kunnen een betere clustering krijgen door eerst de gegevens te schalen.

    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)

Geschaalde Ruspini-gegevens - geclusterd

De standaardmaat voor het vergelijken van clusters is "voltooid". U kunt een andere meetwaarde opgeven met de methode parameter.

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

Voorbeeld 2 - hclust en uitbijters

Bij hiërarchische clustering verschijnen uitbijters vaak als éénpuntsclusters.

Genereer drie Gaussiaanse distributies om het effect van uitbijters te illustreren.

    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)

Testgegevens

Bouw de clusterstructuur en deel deze in drie clusters.

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

hclust vond twee uitbijters en plaatste al het andere in één groot cluster. Om de "echte" clusters te krijgen, moet u mogelijk k hoger instellen.

    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)

Geclusterde testgegevens - 3 uitbijters en 3 grote clusters

Deze StackOverflow-post bevat enige richtlijnen voor het kiezen van het aantal clusters, maar let op dit gedrag bij hiërarchische clustering.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow