我想计算PHP中1 (ID1)和3 (ID1)之间的余弦相似度,类似于1和4,3和4。公式应该是这样的:
相似度= (1.1 * 3.1 + 1.4 * 3.4)/(((1.1)^ 2 + (1.3)^ 2 + (1.4)^ 2)^ 0.5)(((3.1)^ 2 + (3.4)^ 2)^ 0.5)= (4 * 4 + 8 * 4)/(((16 + 16 + 64)0.5 ^)(16 + 16)^ 0.5))
我的数据集是这样的:
ID1 ID2 Value
1 1 4
1 3 4
1 4 8
3 1 4
3 4 4
4 1 8
4 3 4
是否有任何代码计算余弦相似度在PHP为这个?
这个公式在数学中很常见,无论编程语言。
如果你有两个长度为n的向量
u = (u1, u2, ...., un) and v = (v1, v2, ...., vn)
则余弦相似度(即点积)为:
u1*v1 + u2*v2 + .... + un*vn
_____________________________
len(u) * len(v)
其中len(u) = sqrt(u1*u1 + u2*u2 + .... + un*un)
;同理,len(v)