为数据点生成“K”个最近邻

use*_*884 5 python nearest-neighbor knn pandas scikit-learn

给定一个数据点,我需要生成 K 个最近的邻居。我阅读了sklearn 的 sklearn.neighbors 模块,但它在两组数据之间生成了邻居。我想要的可能是最接近传递的数据点的 100 个数据点的列表。

无论如何,任何 KNN 算法都应该在幕后找到这些 K 个数据点。有什么办法可以将这些 K 点作为输出返回?

这是我的示例笔记本

Ven*_*lam 6

from sklearn.neighbors import NearestNeighbors 
Run Code Online (Sandbox Code Playgroud)

这可以为您提供数据集中 k 个最近邻的索引。使用kneighbors,第一个值是距离,第二个值是邻居的索引。从文档:

>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(n_neighbors=1)
>>> neigh.fit(samples) 
NearestNeighbors(algorithm='auto', leaf_size=30, ...)
>>> print(neigh.kneighbors([[1., 1., 1.]])) 
(array([[0.5]]), array([[2]]))
Run Code Online (Sandbox Code Playgroud)