댓글 (+1)에 @Max가 표시 한 것처럼 다른 곳을 찾는 데 시간을 보내는 것보다 "자신의 것을 작성하는"것이 더 간단합니다. 우리가 알고 있듯이, 길이 n 의 두 벡터 A , B 사이 의 코사인 유사성 은A,Bn
C=∑i=1nAiBi∑i=1nA2i−−−−−√⋅∑i=1nB2i−−−−−√
에서 간단하게 생성 R
합니다. X
행이 우리가 유사성을 계산하고자하는 값인 행렬 이라고 가정 하십시오. 그런 다음 다음 R
코드를 사용하여 유사성 행렬을 계산할 수 있습니다 .
cos.sim <- function(ix)
{
A = X[ix[1],]
B = X[ix[2],]
return( sum(A*B)/sqrt(sum(A^2)*sum(B^2)) )
}
n <- nrow(X)
cmb <- expand.grid(i=1:n, j=1:n)
C <- matrix(apply(cmb,1,cos.sim),n,n)
그런 다음 행렬 C
은 코사인 유사성 행렬이며 원하는 히트 맵 함수 (내가 익숙한 유일한 것)에 전달할 수 있습니다 image()
.