Như @Max đã chỉ ra trong các nhận xét (+1), việc viết "của riêng bạn" sẽ đơn giản hơn so với việc dành thời gian tìm kiếm nó ở một nơi khác. Như chúng ta đã biết, độ tương tự cosin giữa hai vectơ có độ dài lànA , Bn
C= ∑i = 1nMộttôiBtôiΣi = 1nMột2tôi-----√⋅ ∑i = 1nB2tôi-----√
đó là đơn giản để tạo ra trong R
. Hãy X
là ma trận trong đó các hàng là các giá trị chúng ta muốn tính toán độ tương tự giữa. Sau đó, chúng ta có thể tính toán ma trận tương tự với R
đoạn mã sau :
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)
Sau đó, ma trận C
là ma trận tương tự cosine và bạn có thể chuyển nó tới bất kỳ chức năng bản đồ nhiệt nào bạn thích (cách duy nhất tôi quen thuộc là image()
).