计算余弦相似度火花 java

Compute cosine similarity spark java

如何计算 2 个 Spark Vector 之间的余弦相似度。我正在使用新的 ml 包。

Spark 2.1.1

编辑:

Spark 提供可用于计算相似度的 RowMatrix,但它接受 mllib.vector 而不是 ml.vector

有没有办法从不同的包中转换 Vectors? 是否有使用 ml.vector 的实现?

mllib 向量转换为 ml 向量的最简单方法是使用 Vectors.fromML 方法,请参阅 Vectors documentation。示例:

val mlVector = org.apache.spark.ml.linalg.Vectors.dense((Array(1.0,2.0,3.0)))
println(mlVector.getClass())

val mllibVector = org.apache.spark.mllib.linalg.Vectors.fromML(mlVector)
println(mllibVector.getClass())

给出输出:

class org.apache.spark.ml.linalg.DenseVector
class org.apache.spark.mllib.linalg.DenseVector