余弦相似度是一种衡量两个向量在多维空间中角度的相似度的方法,它不受向量大小的影响,因此在文本分析、数据挖掘和信息检索等领域得到了广泛的应用。本文将探讨余弦相似度的数学原理,并展示如何在Python中使用它。
余弦相似度通过计算两个向量之间的角度的余弦值来衡量它们的相似度。对于两个非零向量,可以通过欧几里得点积公式来计算余弦相似度。给定两个n维属性向量A和B,余弦相似度cos(θ)可以通过点积和向量的模长来表示。余弦相似度的值范围从-1到1,其中1表示向量完全相同,0表示向量正交(无相似性),-1表示向量完全相反。
在自然语言处理(NLP)中,使用余弦相似度来理解文档之间的相似性。将文档中的文本转换为TF-IDF向量,然后使用余弦相似度来找出它们的相似性。在推荐系统中,例如音乐推荐系统,计算用户之间的相似度,并根据得分向其他用户推荐歌曲或音乐。通常,推荐系统使用余弦相似度在协同过滤或其他过滤技术中为用户推荐项目。
现在让学习如何使用不同的库来实现余弦相似度。
import numpy as np
# 定义两个向量
A = np.array([1, 2, 3])
B = np.array([4, 5, 6])
# 计算余弦相似度
cos_sim = np.dot(A, B) / (np.linalg.norm(A) * np.linalg.norm(B))
print("余弦相似度 (NumPy):", cos_sim)
from sklearn.metrics.pairwise import cosine_similarity
# 定义两个向量
A = [[1, 2, 3]]
B = [[4, 5, 6]]
# 计算余弦相似度
cos_sim = cosine_similarity(A, B)
print("余弦相似度 (scikit-learn):", cos_sim[0][0])