Eu gostaria de fazer um mapa de calor com agrupamento de linhas com base nas distâncias do cosseno. Estou usando R e heatmap.2()
para fazer a figura. Percebo que existe um dist
parâmetro, heatmap.2
mas não consigo encontrar uma função para gerar a matriz de dissimilaridade de cosseno. A dist
função embutida não suporta distâncias de cosseno, também encontrei um pacote chamado arules
com uma dissimilarity()
função, mas funciona apenas em dados binários.
r
clustering
similarities
Greg Slodkowicz
fonte
fonte
Respostas:
que é simples de gerar
R
. LetX
Ser a matriz onde as linhas são os valores que queremos calcular a semelhança entre. Em seguida, podemos calcular a matriz de similaridade com o seguinteR
código:Então a matriz
C
é a matriz de semelhança de cosseno e você pode passá-la para qualquer função de mapa de calor que você gosta (a única com a qual estou familiarizadoimage()
).fonte
Você pode usar a
cosine
função no pacote lsa:http://cran.r-project.org/web/packages/lsa
fonte
A função a seguir pode ser útil ao trabalhar com matrizes, em vez de vetores 1-d:
fonte
Algumas respostas acima são computacionalmente ineficientes, tente isso;
Para matriz de semelhança de cosseno
Converta para matriz de dissimilaridade de cosseno (matriz de distância).
fonte
Ampliando parte do código anterior (do @Macro) sobre esse problema, podemos agrupá-lo em uma versão mais limpa, a seguir:
Espero que isto ajude!
fonte