所以我需要使用欧几里德距离或任何东西找到pyspark DF中给定行的最近邻居。我有20多列,超过千行,所有值都是数字的数据。
我正在尝试对pyspark中的一些数据进行过采样,因为mllib没有内置支持,我决定使用smote自己创建它。
到目前为止,我的方法是使用 stringtoindex 将所有分类距离转换为索引,以便我可以找到欧氏距离和邻居,从而执行击打。
我对spark和ml相当新。任何帮助将不胜感激。
答案 0 :(得分:2)
没试过,但我找到了这个脚本: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