【发布时间】:2022-07-22 13:55:44
【问题描述】:
我有一个这样的 Pyspark 数据框:
0 [0.010904288850724697, -0.010935504920780659, ...
1 [0.34882408380508423, -0.19240069389343262, -0...
2 [0.13833148777484894, -0.23080679774284363, -0...
3 [0.12398581206798553, -0.4803846478462219, -0....
4 [0.16033919155597687, -0.06204992160201073, -0.
现在我想为所有这些数组找到 100 个最近邻。
这是我的尝试:
df_collect = df.toPandas()
features = np.array(df_collect.features.to_list())
knnobj = NearestNeighbors(n_neighbors=100).fit(features)
distance_mat, neighbours_mat = knnobj.kneighbors(features)
但由于 df 太大,它需要的时间太长。我知道我可以广播和并行化最后一步,但我无法找到如何将 spark df 拟合到scikit-learn knn 模型。有没有其他方法可以做到?
我还阅读了一些他们提到 ANN(Approximate Nearest Neighbor) Sparkit-Learn spark_sklearn 的文章,但我无法找到他们对最近邻的实现。谁能指导我下一步该怎么做
【问题讨论】:
标签: python pandas apache-spark pyspark knn