【问题标题】:Compute cosine similarity spark java计算余弦相似度火花java
【发布时间】:2017-10-19 18:37:54
【问题描述】:

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

火花 2.1.1

编辑:

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

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

【问题讨论】:

  • 您可以创建一个 UDF,将两个向量作为输入并在那里进行计算。

标签: java apache-spark cosine-similarity


【解决方案1】:

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

【讨论】:

  • 这正是我所需要的,谢谢。要从mllib.Vector 转到ml.Vector,只需直接使用mllib.Vector 实例中的asML()
猜你喜欢
  • 2015-05-24
  • 2018-01-03
  • 2017-07-07
  • 2018-04-11
  • 2011-07-24
  • 2017-02-03
  • 2013-06-24
  • 2021-05-19
相关资源
最近更新 更多