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

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

问题描述:

我将要计算两个向量的PySpark余弦相似性,像如何计算PySpark中两个向量的余弦相似度?

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

但SciPy的似乎不支持pyspark.ml.linalg.Vector类型。

您可以使用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 
+1

谢谢@Psidom,它的工作原理 – Chao