Ich möchte eine Heatmap mit Zeilenclustering basierend auf Kosinusabständen erstellen. Ich benutze R und heatmap.2()
um die Figur zu machen. Ich kann sehen, dass es einen dist
Parameter in gibt, heatmap.2
aber ich kann keine Funktion finden, um die Cosinus-Unähnlichkeitsmatrix zu erzeugen. Die eingebaute dist
Funktion unterstützt keine Kosinusabstände. Ich habe auch ein Paket gefunden, das arules
mit einer dissimilarity()
Funktion aufgerufen wird, aber es funktioniert nur mit Binärdaten.
r
clustering
similarities
Greg Slodkowicz
quelle
quelle
Antworten:
Wie @Max in den Kommentaren (+1) angegeben hat, ist es einfacher, "eigene" zu schreiben, als Zeit damit zu verbringen, woanders danach zu suchen. Wie wir wissen, ist die Kosinus Ähnlichkeit zwischen zwei Vektoren mit der Länge istA , B n
das ist einfach zu generieren in
R
. SeiX
die Matrix, in der die Zeilen die Werte sind, zwischen denen die Ähnlichkeit berechnet werden soll. Dann können wir die Ähnlichkeitsmatrix mit dem folgendenR
Code berechnen :Dann ist die Matrix
C
die Cosinus-Ähnlichkeitsmatrix und Sie können sie an jede beliebige Heatmap-Funktion weitergeben (die einzige, die mir bekannt ist, istimage()
).quelle
Sie können die
cosine
Funktion aus dem lsa-Paket verwenden:http://cran.r-project.org/web/packages/lsa
quelle
Die folgende Funktion kann beim Arbeiten mit Matrizen anstelle von 1-d-Vektoren hilfreich sein:
quelle
Einige der obigen Antworten sind rechnerisch ineffizient. Versuchen Sie dies.
Für Cosinus-Ähnlichkeitsmatrix
In Cosinus-Unähnlichkeitsmatrix (Distanzmatrix) konvertieren.
quelle
Wenn Sie einen Teil des vorherigen Codes (von @Macro) zu diesem Thema hochfahren, können Sie diesen im Folgenden in eine übersichtlichere Version umschließen:
Hoffe das hilft!
quelle