python 计算大量数据的余弦相似性
时间: 2023-06-19 13:07:42 浏览: 211
在Python中,可以使用NumPy库来计算大量数据的余弦相似性。以下是一个示例代码:
```python
import numpy as np
# 生成两个向量
vec1 = np.random.rand(10000)
vec2 = np.random.rand(10000)
# 计算余弦相似性
cos_sim = np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2))
print("余弦相似性:", cos_sim)
```
在这个示例中,我们首先生成了两个长度为10000的随机向量。然后,使用NumPy的dot函数计算这两个向量的点积,使用linalg.norm函数计算向量的范数,最后将它们除以彼此的范数的乘积,得到余弦相似性。
如果你需要计算多个向量之间的余弦相似性,可以使用循环来实现。例如:
```python
import numpy as np
# 生成多个向量
vecs = np.random.rand(1000, 10000)
# 初始化相似性矩阵
sim_matrix = np.zeros((1000, 1000))
# 计算相似性矩阵
for i in range(1000):
for j in range(i+1, 1000):
cos_sim = np.dot(vecs[i], vecs[j]) / (np.linalg.norm(vecs[i]) * np.linalg.norm(vecs[j]))
sim_matrix[i][j] = cos_sim
sim_matrix[j][i] = cos_sim
print("相似性矩阵:", sim_matrix)
```
在这个示例中,我们生成了1000个长度为10000的随机向量,并使用一个1000x1000的矩阵来存储它们之间的相似性。然后,使用两个嵌套的循环来计算每一对向量之间的余弦相似性,并将它们存储在相似性矩阵中。最后,打印相似性矩阵。
阅读全文