我想从数据帧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.]]
的数据框
附:我希望度量标准是Mahalanobis
不接受的sklearn.neighbors.KDTree
,而scipy.spatial.KDTree
even没有任何度量选项。
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