Considere que temos esse quadro de dados para agrupamento.
# df
dput(df)
structure(c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L,
1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L,
1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 1L, 1L), dim = c(9L, 11L), dimnames = list(c("1",
"2", "3", "4", "5", "6", "7", "8", "9"), c("C", "D", "E", "F",
"G", "H", "K", "L", "M", "N", "P")))
dist_matrix <- dist(df, method = "manhattan")
clust <- hclust(dist_matrix, method = "complete")
plot(clust)
Podemos obter os seguintes resultados de agrupamento, onde as letras itálicas são marcadores adicionais.
Permita-me usar pseudocódigo para ilustrar a função que desejo implementar.
- obter o nó esquerdo e o nó direito de um nó específico.
FUNC GET_RIGHT_NODE(D)
RETUEN E,F,G
FUNC GET_LEFT_NODE(ROOT)
RETUEN A,B,C
- obter elemento folha de nó específico
FUNC GET_LEAF(D)
RETURN 5,3,1,2,4
Tópico relacionado:
R: ajuda a analisar o conteúdo do cluster em clustering hierárquico
Como você imprime as linhas de um objeto hclust em R?
Algoritmo de agrupamento hierárquico de vizinhos mais próximos em R
As informações que você precisa estão codificadas em
clust$merge
(veja?hclust
).Aqui, o nó 1 (a primeira linha de
clust$merge
) é formado pelas folhas2
e4
, o nó 3 (a terceira linha) é formado pela folha7
e o nó 2, etc.Seus rótulos corresponderiam
clust$merge
ao seguinte:Funções para fazer o que você pediu:
Primeiro, os nós à esquerda (direita) de um nó especificado:
As folhas sob um nó especificado:
Demonstrando: