Me gustaría hacer un mapa de calor con agrupamiento de filas basado en distancias de coseno. Estoy usando R y heatmap.2()para hacer la figura. Puedo ver que hay un distparámetro heatmap.2pero no puedo encontrar una función para generar la matriz de disimilitud del coseno. La distfunción incorporada no admite distancias de coseno, también encontré un paquete llamado arulescon una dissimilarity()función pero solo funciona en datos binarios.
r
clustering
similarities
Greg Slodkowicz
fuente
fuente

Respuestas:
Como @Max indicó en los comentarios (+1), sería más sencillo "escribir el suyo" que pasar tiempo buscándolo en otro lugar. Como sabemos, la similitud del coseno entre dos vectores de longitud n esA , B norte
que es fácil de generar
R. SeaXla matriz donde las filas son los valores entre los que queremos calcular la similitud. Luego podemos calcular la matriz de similitud con el siguienteRcódigo:Entonces la matriz
Ces la matriz de similitud de coseno y puede pasarla a la función de mapa de calor que desee (la única con la que estoy familiarizado esimage()).fuente
Puede usar la
cosinefunción del paquete lsa:http://cran.r-project.org/web/packages/lsa
fuente
La siguiente función puede ser útil cuando se trabaja con matrices, en lugar de vectores 1-d:
fuente
Algunas respuestas anteriores son computacionalmente ineficientes, intente esto;
Para la matriz de similitud de coseno
Convierta a matriz de disimilaridad de coseno (matriz de distancia).
fuente
Acelerando parte del código anterior (de @Macro) sobre este tema, podemos envolverlo en una versión más limpia de la siguiente manera:
¡Espero que esto ayude!
fuente