根据网上文章进行整理记录。加上自己的过程的理解,加深印象
# 假设三维空间,矢量信息如下
a = [1,2,3]
b = [4,5,6]
"""
Cosine相似计算公式
a = [X₁,Y₁,Z₁]
b = [X₂,y₂,Z₂]
X₁*X₂ + Y₁*y₂ + Z₁*Z₂
Cos(α) = -----------------------------------------------
__________ __________
√ X₁² + Y₁² + Z₁² * √ X₂² + y₂² + Z₂²
"""
# 分子矢量相乘累加
sum_xy = 0.0
# X₁² + Y₁² + Z₁²
normA = 0.0
# X₂² + y₂² + Z₂²
normB = 0.0
# 分别遍历a和b => (X₁,X₂) (Y₁,y₂) (Z₁,Z₂)
for X₁, X₂ in zip(a,b):
# 矢量相乘累加
sum_xy += X₁*X₂
# 计算|A|部分。自己的矢量平方相加
normA += X₁ ** 2
# 计算|B|部分。自己的矢量平方相加
normB += X₂ ** 2
# 开根号。 即可2分支1的平方, 即 ** 0.5
# normA和normB根号相乘,可以先相乘再开根号
print(sum_xy / ((normA * normB) ** 0.5))