推荐算法余弦相似度python
时间: 2023-11-15 11:01:52 浏览: 179
余弦相似度是一种常用的推荐算法,它可以用来计算两个向量之间的相似度。在推荐系统中,我们可以将用户的兴趣向量和物品的特征向量表示成向量形式,然后通过计算它们之间的余弦相似度来评估用户对物品的喜好程度。在Python中,我们可以使用NumPy库来计算余弦相似度。具体实现步骤如下:
1. 导入NumPy库
```python
import numpy as np
```
2. 定义两个向量
```python
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
```
3. 计算余弦相似度
```python
cos_sim = np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
```
其中,np.dot(a, b)表示向量a和向量b的点积,np.linalg.norm(a)表示向量a的模长。
最终得到的cos_sim即为两个向量之间的余弦相似度。
相关问题
余弦相似度python
以下是余弦相似度算法的Python实现代码:
```python
import math
def cosine_similarity(vec1, vec2):
dot_product = sum(vec1[i] * vec2[i] for i in range(len(vec1)))
magnitude1 = math.sqrt(sum(vec1[i] ** 2 for i in range(len(vec1))))
magnitude2 = math.sqrt(sum(vec2[i] ** 2 for i in range(len(vec2))))
return dot_product / (magnitude1 * magnitude2)
```
其中,vec1和vec2分别是两个向量。我们首先计算这两个向量的点积,即两个向量对应元素相乘后相加得到的结果。然后,我们计算这两个向量的模长,即每个元素的平方和再开根号。最后,余弦相似度就是点积除以两个向量模长的乘积的结果。
多个向量计算余弦相似度python算法
可以使用NumPy库中的dot和norm函数来计算多个向量之间的余弦相似度。假设有n个向量,每个向量有m个维度,可以将它们表示为一个n x m的矩阵。
下面是一个示例代码:
```python
import numpy as np
# 生成5个2维向量
vectors = np.random.rand(5, 2)
# 计算每个向量的模长
norms = np.linalg.norm(vectors, axis=1)
# 将模长转换为列向量
norms = norms.reshape((-1, 1))
# 计算每个向量与其他向量之间的余弦相似度
sims = np.dot(vectors, vectors.T) / (norms * norms.T)
print(sims)
```
输出结果类似于:
```
[[1. 0.96359253 0.92591863 0.94911747 0.93492504]
[0.96359253 1. 0.95376749 0.98108217 0.96536189]
[0.92591863 0.95376749 1. 0.96489926 0.97851085]
[0.94911747 0.98108217 0.96489926 1. 0.98124003]
[0.93492504 0.96536189 0.97851085 0.98124003 1. ]]
```
其中`sims[i][j]`表示第i个向量与第j个向量之间的余弦相似度。对角线上的值为1,表示每个向量与自己之间的余弦相似度为1。
阅读全文