Chciałbym zrobić mapę cieplną z grupowaniem wierszy na podstawie odległości cosinusowych. Używam R i heatmap.2()
do robienia figury. Widzę, że zawiera dist
parametr, heatmap.2
ale nie mogę znaleźć funkcji do wygenerowania macierzy różnicy cosinus. Wbudowana dist
funkcja nie obsługuje odległości cosinus, ja również znaleźć pakiet o nazwie arules
z dissimilarity()
funkcji, ale to działa tylko na danych binarnych.
r
clustering
similarities
Greg Słodkowicz
źródło
źródło
Odpowiedzi:
Jak wskazał @Max w komentarzach (+1), łatwiej byłoby „napisać własne” niż spędzać czas na szukaniu go gdzie indziej. Jak wiemy, podobieństwo cosinus między dwoma wektorami o długości n wynosiA , B n
co jest łatwe do wygenerowania w
R
. NiechX
będzie macierzą, w której wiersze są wartościami, dla których chcemy obliczyć podobieństwo. Następnie możemy obliczyć macierz podobieństwa za pomocą następującegoR
kodu:Następnie macierz
C
jest macierzą podobieństwa cosinus i można ją przekazać do dowolnej funkcji mapy cieplnej, którą lubisz (jedyną, którą znamimage()
).źródło
Możesz użyć
cosine
funkcji z pakietu lsa:http://cran.r-project.org/web/packages/lsa
źródło
Następująca funkcja może być przydatna podczas pracy z macierzami zamiast wektorów 1-d:
źródło
Niektóre powyższe odpowiedzi są nieskuteczne obliczeniowo, spróbuj tego;
Dla macierzy podobieństwa cosinus
Konwertuj na macierz różnicy cosinusów (macierz odległości).
źródło
Poświęcając trochę poprzedniego kodu (z @Macro) na ten temat, możemy zawinąć to w czystszą wersję w następujący sposób:
Mam nadzieję że to pomoże!
źródło