余弦相似PHP

时间:2013-05-28 23:43:36

标签: php cosine-similarity

我想计算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中余弦相似度的代码?

1 个答案:

答案 0 :(得分:3)

无论编程语言如何,公式在数学中都很常见。

如果你有两个长度为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)