php 写一个余弦相似度算法
时间: 2024-09-24 08:05:54 浏览: 39
PHP数据分析引擎计算余弦相似度算法示例
在 PHP 中计算两个向量之间的余弦相似度通常涉及以下几个步骤:
1. 定义函数,接收两个数组作为参数,假设这两个数组表示的是两个向量的元素。
```php
function cosine_similarity($vector1, $vector2) {
// 如果两个向量长度不同,返回0,因为无法直接比较
if (count($vector1) !== count($vector2)) {
return 0;
}
// 计算两个向量的点积(对应位置元素相乘之和)
$dot_product = array_map(function ($a, $b) { return $a * $b; }, $vector1, $vector2);
$dot_product_sum = array_sum($dot_product);
// 计算每个向量的模(欧几里得距离)
$magnitude_vector1 = sqrt(array_sum(array_map('pow', $vector1, 2)));
$magnitude_vector2 = sqrt(array_sum(array_map('pow', $vector2, 2)));
// 使用点积除以各自的模,得到余弦值
if ($magnitude_vector1 > 0 && $magnitude_vector2 > 0) {
$cosine_similarity = $dot_product_sum / ($magnitude_vector1 * $magnitude_vector2);
} else {
// 当模为0(即其中一个向量全为0)时,余弦相似度为0
$cosine_similarity = 0;
}
return $cosine_similarity;
}
```
阅读全文