Ich habe Daten als eine Anzahl von verschiedenen Histogrammen einer einzelnen Variablen dargestellt. Ich möchte herausfinden, welche Histogramme ähnlich sind, indem Sie unüberwachtes Clustering verwenden. Ich möchte auch die optimale Anzahl der zu verwendenden Cluster kennen.Cluster-Histogramme mit Earth Movern Entfernung R
Ich habe gelesen, über die Earth-Movers-Distanz-Metrik als ein Maß für die Entfernung zwischen Histogrammen, aber nicht wissen, wie das in gemeinsamen Clustering-Algorithmen zu verwenden (z. B. k bedeutet).
Primär: Welche Pakete und Funktionen verwende ich zum Clusterhistogramm?
Sekundär: Wie ermittle ich die "optimale" Anzahl von Clustern?
Beispiel Datensatz 1 (3 uni-modal Cluster):
v1 <- rnorm(n=100, mean = 10, sd = 1) # cluster 1 (around 10)
v2 <- rnorm(n=100, mean = 50, sd = 5) # cluster 2 (around 50)
v3 <- rnorm(n=100, mean = 100, sd = 10) # cluster 3 (around 100)
v4 <- rnorm(n=100, mean = 12, sd = 2) # cluster 1
v5 <- rnorm(n=100, mean = 45, sd = 6) # cluster 2
v6 <- rnorm(n=100, mean = 95, sd = 6) # cluster 3
Beispiel Datensatz 2 (3 bimodale Cluster):
b1 <- c(rnorm(n=100, mean=9, sd=2) , rnorm(n=100, mean=200, sd=20)) # cluster 1 (around 10 and 200)
b2 <- c(rnorm(n=100, mean=50, sd=5), rnorm(n=100, mean=100, sd=10)) # cluster 2 (around 50 and 100)
b3 <- c(rnorm(n=100, mean=99, sd=8), rnorm(n=100, mean=175, sd=17)) # cluster 3 (around 100 and 175)
b4 <- c(rnorm(n=100, mean=12, sd=2), rnorm(n=100, mean=180, sd=40)) # cluster 1
b5 <- c(rnorm(n=100, mean=45, sd=6), rnorm(n=100, mean=80, sd=30)) # cluster 2
b6 <- c(rnorm(n=100, mean=95, sd=6), rnorm(n=100, mean=170, sd=25)) # cluster 3
b7 <- c(rnorm(n=100, mean=10, sd=1), rnorm(n=100, mean=210, sd=30)) # cluster 1 (around 10 and 200)
b8 <- c(rnorm(n=100, mean=55, sd=5), rnorm(n=100, mean=90, sd=15)) # cluster 2 (around 50 and 100)
b9 <- c(rnorm(n=100, mean=89, sd=9), rnorm(n=100, mean=165, sd=20)) # cluster 3 (around 100 and 175)
b10 <- c(rnorm(n=100, mean=8, sd=2), rnorm(n=100, mean=160, sd=30)) # cluster 1
b11 <- c(rnorm(n=100, mean=55, sd=6), rnorm(n=100, mean=110, sd=10)) # cluster 2
b12 <- c(rnorm(n=100, mean=105, sd=6), rnorm(n=100, mean=185, sd=21)) # cluster 3
EMD ist sehr teuer, daher müssen Sie untere Grenzen und Indizes verwenden, um das Clustering zu beschleunigen. K-means funktioniert nur für Bregman-Divergenzen, und ich glaube nicht, dass EMD eins ist. –