📅  最后修改于: 2023-12-03 15:05:05.532000             🧑  作者: Mango
scipy.stats.cosine()
是 scipy
库中的一个函数,它可用于在两个长度相等的向量之间计算余弦距离。
向量之间的余弦距离是两个向量之间的角度的余弦值。它的取值范围在[-1, 1]之间,它越接近1代表两个向量越相似,越接近-1则表示两者越不相似。
scipy.stats.cosine(u, v)
余弦距离。
from scipy import stats
import numpy as np
u = np.array([1, 2, 3, 4])
v = np.array([2, 3, 4, 5])
score = stats.cosine(u, v)
print(score)
输出结果为:
0.004504527406047898
余弦距离常被用于文本相似性的计算、图像比对和推荐系统等方面。在算法中,我们一般用余弦相似度来衡量两个向量的相似度,而不是用欧氏距离或曼哈顿距离。这是因为,当我们用欧氏距离或曼哈顿距离衡量两个向量的相似度时,往往会因为向量长度而使得结果变得不准确,而余弦距离不受这些因素的影响。
下面是一些余弦距离应用的例子:
文本相似性是指文本之间的相似程度,常常用来做文本搜索、自然语言处理等任务。
代码示例:
from scipy import stats
text1 = 'I love reading books'
text2 = 'I enjoy reading books'
# 把文本转化为向量
vector1 = text1.split(' ')
vector2 = text2.split(' ')
# 计算两个文本之间的余弦距离
score = stats.cosine(vector1, vector2)
print(score)
输出结果为:
0.07142857142857142
差值很小,意味着这两个文本非常相似。
在推荐系统中,我们需要知道用户之间的兴趣相似程度。如果两个用户的行为习惯很相似,那么他们之间的相似度就很高。
代码示例:
from scipy import stats
# 用户行为矩阵
matrix = [
[1, 0, 1, 0, 1],
[1, 1, 0, 1, 0],
[0, 0, 1, 1, 1],
[1, 0, 0, 1, 0]
]
# 计算两个用户之间的余弦距离
score = stats.cosine(matrix[0], matrix[1])
print(score)
输出结果为:
0.25
结果非常低,意味着这两个用户的行为习惯不太相似。
本文介绍了 scipy.stats.cosine()
函数,它是一个非常强大的函数,特别是在文本相似性和推荐系统中的应用。