使用欧氏距离或类似距离的pyspark中的最近邻居

Nearest neighbour in pyspark using euclidean distance or similar

所以我需要在 pyspark DF 中使用欧几里得距离或任何东西找到给定行的最近邻居。我有 20 多列,超过千行并且所有值都是数字的数据。

我正在尝试对 pyspark 中的一些数据进行过采样,因为 mllib 没有内置支持,我决定使用 smote 自己创建它。

到目前为止,我的方法是使用 stringtoindex 将所有分类距离转换为索引,这样我就可以找到欧氏距离和邻居,从而执行打击。

我对 spark 和 ml 还很陌生。任何帮助将不胜感激。

没试过,但我找到了这个脚本:https://github.com/jakac/spark-python-knn/blob/master/python/gaussalgo/knn/knn.py

如果您的数据是数据帧,您应该首先使用 vectorASsembler https://spark.apache.org/docs/latest/ml-features.html#vectorassembler 将您的列合并到一个向量中,然后使用 df.select("id", "yourColumnVector")

我提供的库似乎只适用于 rdd,因此您应该使用 df.rdd

将数据框转换为 RDD