Suche…


Einführung

Das Paket stats bietet die Funktion hclust , um hierarchisches Clustering durchzuführen.

Bemerkungen

Neben hclust stehen auch andere Methoden zur Verfügung, siehe CRAN- Paketansicht zum Clustering .

Beispiel 1 - Grundlegende Verwendung von hclust, Anzeige des Dendrogramms, Plotcluster

Die Clusterbibliothek enthält die Ruspini-Daten - einen Standarddatensatz zur Veranschaulichung der Clusteranalyse.

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

Ruspini-Daten

hclust erwartet eine Entfernungsmatrix, nicht die Originaldaten. Wir berechnen den Baum anhand der Standardparameter und zeigen ihn an. Mit dem Hang-Parameter werden alle Blätter des Baums entlang der Grundlinie ausgerichtet.

    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)

Geben Sie hier die Bildbeschreibung ein

Schneiden Sie die Baumstruktur aus, um vier Cluster zu erhalten, und ordnen Sie die Daten neu zu, indem Sie die Punkte nach Cluster färben. k ist die gewünschte Anzahl von Clustern.

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

Ruspini-Daten - Erstes Clustering

Dieses Clustering ist etwas seltsam. Wir können ein besseres Clustering erzielen, indem wir zuerst die Daten skalieren.

    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)

Skalierte Ruspini-Daten - gruppiert

Das Standard-Unähnlichkeitsmaß für den Vergleich von Clustern ist "complete". Sie können mit dem Methodenparameter eine andere Kennzahl angeben.

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

Beispiel 2 - hclust und Ausreißer

Beim hierarchischen Clustering werden Ausreißer häufig als Einpunkt-Cluster angezeigt.

Generieren Sie drei Gaußsche Verteilungen, um die Auswirkungen von Ausreißern zu veranschaulichen.

    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)

Testdaten

Erstellen Sie die Clusterstruktur, und teilen Sie sie in drei Cluster auf.

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

hclust hat zwei Ausreißer gefunden und alles andere in einem großen Cluster zusammengefasst. Um die "echten" Cluster zu erhalten, müssen Sie möglicherweise k höher setzen.

    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)

Testdaten gruppiert - 3 Ausreißer & 3 große Cluster

Dieser StackOverflow-Beitrag enthält einige Anweisungen zum Auswählen der Anzahl von Clustern. Beachten Sie jedoch dieses Verhalten beim hierarchischen Clustering.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow