Je voudrais faire une carte thermique avec un regroupement de lignes basé sur les distances cosinus. J'utilise R et heatmap.2()
pour faire la figure. Je peux voir qu'il y a un dist
paramètre heatmap.2
mais je ne trouve pas de fonction pour générer la matrice de dissimilarité cosinus. La dist
fonction intégrée ne prend pas en charge les distances cosinus, j'ai également trouvé un package appelé arules
avec une dissimilarity()
fonction mais cela ne fonctionne que sur les données binaires.
r
clustering
similarities
Greg Slodkowicz
la source
la source
Réponses:
Comme @Max l'a indiqué dans les commentaires (+1), il serait plus simple "d'écrire le vôtre" que de passer du temps à le chercher ailleurs. Comme nous le savons, la similitude cosinus entre deux vecteurs de longueur n estA , B n
qui est simple à générer
R
. SoitX
la matrice où les lignes sont les valeurs dont nous voulons calculer la similitude. Ensuite, nous pouvons calculer la matrice de similitude avec leR
code suivant :Ensuite, la matrice
C
est la matrice de similitude cosinus et vous pouvez la transmettre à la fonction de carte thermique que vous aimez (la seule que je connaisseimage()
).la source
Vous pouvez utiliser la
cosine
fonction du package lsa:http://cran.r-project.org/web/packages/lsa
la source
La fonction suivante peut être utile lorsque vous travaillez avec des matrices, au lieu de vecteurs 1-d:
la source
Certaines réponses ci-dessus sont inefficaces sur le plan informatique, essayez ceci;
Pour la matrice de similitude cosinus
Convertir en matrice de dissimilarité cosinus (matrice de distance).
la source
En augmentant une partie du code précédent (de @Macro) sur ce problème, nous pouvons envelopper dans une version plus propre dans ce qui suit:
J'espère que cela t'aides!
la source