如何计算 PySpark 中两个向量的余弦相似度?
How to calculate the cosine similarity of two vectors in PySpark?
我即将在 PySpark 中计算两个向量的余弦相似度,例如
1 - spatial.distance.cosine(xvec, yvec)
但是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
与scipy:
from scipy.spatial.distance import cosine
x = np.array([1,2,3])
y = np.array([2,3,5])
cosine(x, y)
# 0.0028235350472619603
我即将在 PySpark 中计算两个向量的余弦相似度,例如
1 - spatial.distance.cosine(xvec, yvec)
但是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
与scipy:
from scipy.spatial.distance import cosine
x = np.array([1,2,3])
y = np.array([2,3,5])
cosine(x, y)
# 0.0028235350472619603