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

问题描述 投票:1回答:1

我想从数据帧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.]]的数据框

附:我希望度量标准是Mahalanobis不接受的sklearn.neighbors.KDTree,而scipy.spatial.KDTreeeven没有任何度量选项。

python pandas dataframe knn
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.