Python 基于距离而非邻域的KNN

Python 基于距离而非邻域的KNN,python,knn,Python,Knn,我有三列,我需要找到接近的值,如下所示 A B Distance point_a point_b 20 point_a point_c 30 point_a point_d 40 point_a point_e 25 point_g point_a 26 point_c point_d 30 point_c point_e 30

我有三列,我需要找到接近的值,如下所示

A            B        Distance

point_a    point_b      20

point_a    point_c      30

point_a    point_d      40

point_a    point_e      25

point_g    point_a      26


point_c    point_d      30

point_c    point_e      30


point_d    point_e      40
我需要找到所有附近的点


例如,如果我想从28英里内的点_a找到所有附近的点,它将是点_b、点e和点g

,你可以使用一个简单的查询,而不需要任何机器学习算法:

result = df.query("(A == 'point_a' | B == 'point_a') & Distance < 28")
获取一组最近的点:

result = result[['A', 'B']].stack().unique().tolist()
result = set(result)
result.remove('point_a')
结果:

         A        B  Distance
0  point_a  point_b        20
3  point_a  point_e        25
4  point_g  point_a        26
{'point_e', 'point_g', 'point_b'}

因此,您可以浏览数据库,找到包含
点a
的所有行,无论它是第一个元素还是第二个元素,并存储最小
k
点。
{'point_e', 'point_g', 'point_b'}