余弦相似度是一种衡量两个非零向量之间角度的相似性度量方法。它通过计算两个向量的点积,然后除以它们模的乘积来实现。在L2归一化数据上,这种方法等同于线性核。余弦相似度的计算公式如下:
K(X, Y) = / (||X||*||Y||)
在机器学习和数据科学领域,余弦相似度常用于文本挖掘、推荐系统和聚类分析等场景。例如,它可以用来评估文档之间的相似性,或者用户对商品的偏好相似度。
在Python中,可以使用sklearn库中的cosine_similarity
函数来计算两个数据集之间的余弦相似度。这个函数接受两个参数:X和Y,它们可以是数组或稀疏矩阵,分别代表两个输入数据集。如果Y为None,则函数将计算X中所有样本之间的成对相似性。
此外,cosine_similarity
函数还有一个可选参数dense_output
,它是一个布尔值,默认为True。当输入是稀疏矩阵时,如果dense_output
为False,函数将返回稀疏矩阵作为输出;否则,即使输入是稀疏的,输出也将是密集的。这个参数是在版本0.17中新增的。
下面是一个使用cosine_similarity
函数的示例代码:
from sklearn.metrics.pairwise import cosine_similarity
X = [
[0, 0, 0],
[1, 1, 1]
]
Y = [
[1, 0, 0],
[1, 1, 0]
]
similarities = cosine_similarity(X, Y)
print(similarities)
在这个例子中,定义了两个数据集X和Y,然后使用cosine_similarity
函数计算它们之间的余弦相似度。输出结果是一个数组,其中每个元素代表X中一个样本与Y中一个样本之间的相似度。
余弦相似度的值范围在-1到1之间。值为1表示两个向量完全相同,值为-1表示完全相反,值为0表示两个向量之间没有相关性。在实际应用中,可以根据余弦相似度的值来判断两个样本之间的相似程度。
除了计算两个数据集之间的相似度,余弦相似度还可以用于其他场景,如特征选择、异常检测和数据降维等。通过合理利用余弦相似度,可以从大量数据中发现有价值的信息,为决策提供支持。