Skip to content

余弦相似

两个向量的夹角,夹角越小,表示两个向量越相似

公式

$ \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. $
python
import numpy as np

def cosine_similarity_manual(a, b):
    dot_product = np.dot(a, b)
    norm_a = np.linalg.norm(a)  # 计算向量 a 的模
    norm_b = np.linalg.norm(b)  # 计算向量 b 的模
    return dot_product / (norm_a * norm_b)

vector_a = np.array([1, 2, 3])
vector_b = np.array([4, 5, 6])

cos_sim = cosine_similarity_manual(vector_a, vector_b)
print("余弦相似度:", cos_sim)


from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

# 定义两个向量
vector_a = np.array([1, 2, 3])
vector_b = np.array([4, 5, 6])

# 公式计算余弦相似度
# 1*4 + 2*5 + 3*6 = 32
# sqrt(1^2 + 2^2 + 3^2) = sqrt(14)
# sqrt(4^2 + 5^2 + 6^2) = sqrt(77)
# 32 / (sqrt(14) * sqrt(77)) = 0.9746318461970762

# 计算余弦相似度
cos_sim = cosine_similarity([vector_a], [vector_b])
print("余弦相似度:", cos_sim[0][0])