如何从另一个数据框中找到一个数据框中的点的最近邻居

时间:2019-03-27 00:31:32

标签: python pandas dataframe knn

我想从数据帧k中找到数据帧A中所有点的B最近邻居。那怎么办? 看来sklearn.neighbors.NearestNeighbors仅需要一组数据,并且只需要一个查询点。

赞:

samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(n_neighbors=1)
neigh.fit(samples) 

print(neigh.kneighbors([[1., 1., 1.]])) 

来自Python documentaion

我想要一个具有多个查询点而不是[[1., 1., 1.]]

的数据框

P.S。我希望度量标准为Mahalanobis不接受的sklearn.neighbors.KDTree,并且scipy.spatial.KDTree甚至没有任何度量标准选项。

1 个答案:

答案 0 :(得分:3)

import pandas as pd
from scipy.spatial import KDTree

dataA = pd.DataFrame(pd.np.random.rand(100, 100))
dataB = pd.DataFrame(pd.np.random.rand(100, 100))

kdB = KDTree(dataB.values)
print(kdB.query(dataA.values, k=3)[-1]) # k desired number of neighbors 
#returns indices of 3-neighbors for all rows/points in A