网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
,
y
]
转换为
[
(
x
−
a
)
/
b
,
(
y
−
c
)
/
d
]
[x, y] 转换为 [(x - a) / b, (y - c) / d]
[x,y]转换为[(x−a)/b,(y−c)/d]。
基础知识
余弦相似度
- A,B为向量,向量长度必须一致,这表示维度一致。
- 公式如下:
- 代码如下:
import org.apache.spark.ml.linalg.{Vector, Vectors}
import org.apache.spark.sql.functions.udf
// 定义一个UDF,用于计算两个向量的余弦相似度
val cosineSimilarity = udf((v1: Vector, v2: Vector) => {
val dotProduct = v1.dot(v2)
val norms = Vectors.norm(v1, 2) \* Vectors.norm(v2, 2)
dotProduct / norms
}:Double)
上面的v1,v2可以看作向量A、B。
这段代码是用来计算两个