Я хочу протестировать иерархическую кластеризацию с помощью методов "центроид" и "медиана".У меня есть следующий код R:
library(dendextend)
iris <- datasets::iris
iris2 <- iris[,-5]
species_labels <- iris[,5]
d_iris <- dist(iris2)
hc_iris <- hclust(d_iris, method = "centroid")
dend <- as.dendrogram(hc_iris)
dend <- color_branches(dend, k=3)
plot(dend,
main = "Clustered Iris data set
(the labels give the true flower species)",
horiz = TRUE, nodePar = list(cex = .007))
Число кластеров, кажется, больше, чем k
в функции color_branches
.
Однако, если я выполню cutree
непосредственно на hc_iris
, что является результатом иерархической кластеризации:
table(cutree(hc_iris, k=3), iris$Species)
Я получу 3 кластера, как и ожидалось:
setosa versicolor virginica
50 0 0
0 50 48
0 0 2
Но если я применю функцию cutree
к дендрограмме, число кластеров будет 34:
table(cutree(as.dendrogram(hc_iris), 3), iris$Species)
setosa versicolor virginica
4 0 0
3 0 0
3 0 0
6 0 0
2 0 0
3 0 0
10 0 0
5 0 0
4 0 0
1 0 0
1 0 0
2 0 0
1 0 0
3 0 0
2 0 0
0 3 0
0 27 9
0 12 0
0 2 0
0 3 0
0 1 3
0 2 0
0 0 9
0 0 3
0 0 6
0 0 2
0 0 3
0 0 3
0 0 3
0 0 2
0 0 2
0 0 2
0 0 1
0 0 2
Это происходит как с "центроидными", так и с "срединными" методами.