如何在Python中计算余弦相似度

如何在Python中计算余弦相似度

在这篇文章中,我们计算两个非零向量之间的余弦相似度。向量是一个单一的二维信号NumPy数组。余弦相似度是一种相似度的测量方法,通常用于测量文本分析中的文档相似度。我们使用下面的公式来计算余弦相似度。

Similarity = (A.B) / (||A||.||B||) 

其中A和B是矢量。

  • A.B是A和B的点积:它被计算为A和B的元素相乘之和。
  • ||A||是A的L2准则。它被计算为向量A的元素的平方之和的平方根。

示例 1:

在下面的例子中,我们计算两个向量(1-d 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])
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中计算余弦相似度?

示例 2:

在下面的例子中,我们计算了一批三个向量(二维NumPy数组)和一个向量(一维NumPy数组)之间的余弦相似度。

# 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)之间的余弦相似性。同样,第三个元素也是如此。

如何在Python中计算余弦相似度?

示例 3:

在下面的例子中,我们计算两个2维数组之间的余弦相似度。这里每个数组有三个向量。在这里,我们用元素相乘的m来计算点积。

# 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的第二行之间的余弦相似度,第三个元素也是如此。

如何在Python中计算余弦相似度?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy 数学函数