【问题标题】:Calculate the cosine distance between two column in Spark计算 Spark 中两列之间的余弦距离
【发布时间】:2020-07-14 20:25:05
【问题描述】:

我正在使用 Python 和 Spark 来解决问题。 我在 Spark Dataframe 中有包含两列的数据框 每列都包含一个数字(例如双精度或浮点)类型的标量。

我想将这两列解释为向量并计算它们之间的余弦相似度。 到目前为止,我只找到了可以用于位于数据帧单元格中的密集向量的 spark 线性代数。

代码示例

numpy 中的代码

import numpy as np
from numpy.linalg import norm
vec = np.array([1, 2])
vec_2 = np.array([2, 1])
angle_vec_vec = (np.dot(vec, vec))/(norm(vec * norm(vec)))
print(angle_vec_vec )

结果应该是 0.8

如何在 Spark 中做到这一点?

df_small = spark.createDataFrame([(1, 2), (2, 1)])
df_small.show()

有没有办法将一列双精度值转换为密集向量? 您是否看到任何其他解决方案来解决我的问题?

【问题讨论】:

    标签: python numpy apache-spark


    【解决方案1】:

    您可以看到here 一个在 Scala 中计算余弦距离的示例。策略是将文档表示为 RowMatrix,然后使用其 columnSimilarities() 方法。

    如果你想使用 PySpark,你可以试试here的建议

    【讨论】:

      猜你喜欢
      • 2016-11-29
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 2017-08-03
      • 2014-08-21
      • 2021-07-15
      相关资源
      最近更新 更多