ตามที่ @ Max ระบุไว้ในความคิดเห็น (+1) การเขียน "ของคุณเอง" จะง่ายกว่าการใช้เวลาเพื่อค้นหาที่อื่น อย่างที่เรารู้ความคล้ายคลึงกันของโคไซน์ระหว่างสองเวกเตอร์ของความยาวnคือA , Bn
ค= ∑i = 1nAผมBผมΣi = 1nA2ผม-----√⋅ ∑i = 1nB2ผม-----√
ซึ่งตรงไปตรงมาเพื่อสร้าง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
ก็คือเมทริกซ์ความเหมือนโคไซน์และคุณสามารถส่งผ่านไปยังฟังก์ชัน Heatmap ใดก็ได้ที่คุณชอบ (อันเดียวที่ฉันคุ้นเคยคือimage()
)