小编Abh*_*ury的帖子

计算pyspark中数据帧的所有行之间的余弦相似度

我有一个数据集,其中包含工人的人口统计信息,如年龄性别,地址等及其工作地点.我从数据集创建了一个RDD并将其转换为DataFrame.

每个ID有多个条目.因此,我创建了一个DataFrame,其中只包含工人的ID和他/她工作过的各个办公地点.

    |----------|----------------|
    | **ID**    **Office_Loc**  |
    |----------|----------------|
    |   1      |Delhi, Mumbai,  |
    |          | Gandhinagar    |
    |---------------------------|
    |   2      | Delhi, Mandi   | 
    |---------------------------|
    |   3      |Hyderbad, Jaipur|
    -----------------------------
Run Code Online (Sandbox Code Playgroud)

我想根据办公地点计算每个工人与其他工人之间的余弦相似度.

所以,我遍历了DataFrame的行,从DataFrame中检索了一行:

myIndex = 1
values = (ID_place_df.rdd.zipWithIndex()
            .filter(lambda ((l, v), i): i == myIndex)
            .map(lambda ((l,v), i): (l, v))
            .collect())
Run Code Online (Sandbox Code Playgroud)

然后使用地图

    cos_weight = ID_place_df.select("ID","office_location").rdd\
  .map(lambda x: get_cosine(values,x[0],x[1]))
Run Code Online (Sandbox Code Playgroud)

计算提取的行和整个DataFrame之间的余弦相似度.

我不认为我的方法是好的,因为我在迭代DataFrame的行,它失败了使用spark的整个目的.在pyspark有更好的方法吗?好心提醒.

python dataframe cosine-similarity pyspark

6
推荐指数
1
解决办法
9689
查看次数

标签 统计

cosine-similarity ×1

dataframe ×1

pyspark ×1

python ×1