Cha*_*hao 1 pyspark apache-spark-mllib
我要计算PySpark中两个向量的余弦相似度,比如
1 - spatial.distance.cosine(xvec, yvec)
Run Code Online (Sandbox Code Playgroud)
但是scipy似乎不支持pyspark.ml.linalg.Vector类型.
你可以使用dot和norm方法很容易地计算它:
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
Run Code Online (Sandbox Code Playgroud)
随着scipy:
from scipy.spatial.distance import cosine
?
x = np.array([1,2,3])
y = np.array([2,3,5])
cosine(x, y)
# 0.0028235350472619603
Run Code Online (Sandbox Code Playgroud)