gpt4 book ai didi

php - PHP中的余弦相似度

转载 作者:行者123 更新时间:2023-12-04 04:56:04 24 4
gpt4 key购买 nike

我想计算PHP中1(ID1)和3(ID1)之间的余弦相似度。
公式将是这样的:

similarity = (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 中的余弦相似度?

最佳答案

向量 A 和 B 之间的相似性可以看作是 A 和 B 之间的点积,通过将其除以两个范数的乘积来归一化。

PHP 中的点积可以不用 for 循环来编写:

$dot_product=array_sum(array_map(create_function('$a, $b', 'return $a * $b;'), $a1, $a2));

所以首先创建函数:
function dotp($arr1, $arr2){
return array_sum(array_map(create_function('$a, $b', 'return $a * $b;'), $arr1, $arr2));
}

现在余弦相似度是
$similarity=dotp($id1,$id2)/sqrt(dotp($id1,$id1)*dotp($id2,$id2))

关于php - PHP中的余弦相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16736582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com