我想从数据帧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.]]))
我想要一个具有多个查询点而不是[[1., 1., 1.]]
P.S。我希望度量标准为Mahalanobis
不接受的sklearn.neighbors.KDTree
,并且scipy.spatial.KDTree
甚至没有任何度量标准选项。
答案 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