如何在Python中计算余弦相似度?
在本文中,我们计算了两个非零向量之间的余弦相似度。向量是单个二元一维信号NumPy 数组。余弦相似度是相似度的一种度量,在文本分析中常用于度量文档相似度。我们使用下面的公式来计算余弦相似度。
Similarity = (A.B) / (||A||.||B||)
其中 A 和 B 是向量:
- AB 是 A 和 B 的点积:它被计算为 A 和 B 的元素乘积之和。
- ||一个||是 A 的 L2 范数:它被计算为向量 A 的元素的平方和的平方根。
示例 1:
在下面的示例中,我们计算两个向量(一维 NumPy 数组)之间的余弦相似度。要在此处定义向量,我们还可以使用Python列表。
Python
# import required libraries
import numpy as np
from numpy.linalg import norm
# define two lists or array
A = np.array([2,1,2,3,2,9])
B = np.array([3,4,2,4,5,5])
print("A:", A)
print("B:", B)
# compute cosine similarity
cosine = np.dot(A,B)/(norm(A)*norm(B))
print("Cosine Similarity:", cosine)
Python
# import required libraries
import numpy as np
from numpy.linalg import norm
# define two lists or array
A = np.array([[2,1,2],[3,2,9], [-1,2,-3]])
B = np.array([3,4,2])
print("A:\n", A)
print("B:\n", B)
# compute cosine similarity
cosine = np.dot(A,B)/(norm(A, axis=1)*norm(B))
print("Cosine Similarity:\n", cosine)
Python
# import required libraries
import numpy as np
from numpy.linalg import norm
# define two arrays
A = np.array([[1,2,2],
[3,2,2],
[-2,1,-3]])
B = np.array([[4,2,4],
[2,-2,5],
[3,4,-4]])
print("A:\n", A)
print("B:\n", B)
# compute cosine similarity
cosine = np.sum(A*B, axis=1)/(norm(A, axis=1)*norm(B, axis=1))
print("Cosine Similarity:\n", cosine)
print("Cosine Similarity:\n", cosine)
输出:
示例 2:
在下面的示例中,我们计算了一批三个向量(二维 NumPy 数组)和一个向量(一维 NumPy 数组)之间的余弦相似度。
Python
# import required libraries
import numpy as np
from numpy.linalg import norm
# define two lists or array
A = np.array([[2,1,2],[3,2,9], [-1,2,-3]])
B = np.array([3,4,2])
print("A:\n", A)
print("B:\n", B)
# compute cosine similarity
cosine = np.dot(A,B)/(norm(A, axis=1)*norm(B))
print("Cosine Similarity:\n", cosine)
输出:
请注意,A 有三个向量,B 是一个向量。在上面的输出中,我们得到了余弦相似度数组中的三个元素。第一个元素对应于 A 的第一个向量(第一行)和第二个向量(B)之间的余弦相似度。第二个元素对应于 A 的第二个向量(第二行)和第二个向量(B)之间的余弦相似度。第三个元素也是如此。
示例 3:
在下面的示例中,我们计算两个二维数组之间的余弦相似度。这里每个数组都有三个向量。这里使用元素乘积的 m 来计算点积。
Python
# import required libraries
import numpy as np
from numpy.linalg import norm
# define two arrays
A = np.array([[1,2,2],
[3,2,2],
[-2,1,-3]])
B = np.array([[4,2,4],
[2,-2,5],
[3,4,-4]])
print("A:\n", A)
print("B:\n", B)
# compute cosine similarity
cosine = np.sum(A*B, axis=1)/(norm(A, axis=1)*norm(B, axis=1))
print("Cosine Similarity:\n", cosine)
print("Cosine Similarity:\n", cosine)
输出:
余弦相似度数组的第一个元素是 A 和 B 的第一行之间的相似度。类似地,第二个元素是 A 和 B 的第二行之间的余弦相似度。对于第三个元素也是如此。