【发布时间】:2018-04-27 12:12:08
【问题描述】:
我想使用 pyspark 中的数据帧中的值构造一个距离矩阵。我现在拥有的是
+----+-------------+
| id | list |
+----+-------------+
| 1 | [a, b, ...] |
+----+-------------+
| 2 | [c, d, ...] |
+----+-------------+
| 3 | [e, f, ...] |
+----+-------------+
我想使用我自己的距离函数并做类似的事情
for i in range(len(ids)):
for j in range(i + 1, len(ids)):
dist = calculate_distance(features[i], features[j])
add_row_to_distance_df([ids[i], ids[j], dist])
编辑:预期输出是
+-----+-----+-----------------------------+
| id1 | id2 | dist |
+-----+-----+-----------------------------+
| 1 | 2 | d([a, b, ...], [c, d, ...]) |
+-----+-----+-----------------------------+
| 1 | 3 | d([a, b, ...], [e, f, ...]) |
+-----+-----+-----------------------------+
| 2 | 3 | d([c, d, ...], [e, f, ...]) |
+-----+-----+-----------------------------+
我该怎么做呢?
【问题讨论】:
-
你试过什么?如果您展示您的尝试,您将获得更多帮助。您希望最终输出是什么样的?
-
@AChampion:我不知道如何开始。我认为可以对数据帧中的所有
ids进行某种映射,但要构建一个三角矩阵,我必须不断丢弃之前计算的不相关的ids,这听起来效率很低。跨度> -
a、b、c是否代表您想要距离的其他 ID? -
@AChampion:不,它们是用于计算距离的“特征”。
标签: python pyspark distance-matrix