如何计算PySpark中两个向量的余弦相似度?

时间:2017-10-15 03:34:16

标签: pyspark apache-spark-mllib

我即将计算PySpark中两个向量的余弦相似度,如

1 - spatial.distance.cosine(xvec, yvec)

但是scipy似乎不支持pyspark.ml.linalg.Vector类型。

1 个答案:

答案 0 :(得分:6)

您可以使用dotnorm方法轻松计算:

from pyspark.ml.linalg import Vectors
x = Vectors.dense([1,2,3])
y = Vectors.dense([2,3,5])

1 - x.dot(y)/(x.norm(2)*y.norm(2))
# 0.0028235350472619603

使用 scipy

from scipy.spatial.distance import cosine
​
x = np.array([1,2,3])
y = np.array([2,3,5])

cosine(x, y)
# 0.0028235350472619603