余弦相似度计算

?
余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。θ度角的余弦值是1,而其他任何角度的余弦值都不大于1,并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为-1到1之间。
?
计算公式
余弦相似度计算
?
在用余弦相似度计算两个向量时,需要保持两个向量之间的向量个数相同;
计算值越大相似度越高;
?
代码1
def cos(x:Array[Double],y:Array[Double]):Double={
val dot = for{i <- 0 until x.length} yield x(i) * y(i)

val normx = math.sqrt(
x.map(v=>{
math.pow(v,2)
}).sum)

val normy = math.sqrt(
y.map(v=>{
math.pow(v,2)
}).sum)

dot.sum / (normx*normy)
}

?

代码2

def cos(x: DenseVector[Double], y: DenseVector[Double])={
val dot = x.dot(y)
val normxy = norm(x) * norm(y)
dot/normxy
}

?

余弦相似度计算

上一篇:EF Core使用


下一篇:10. 9. Vue 计算属性的setter和getter