КНН на основе расстояния вместо соседей - PullRequest
0 голосов
/ 19 октября 2019

У меня есть три столбца, и мне нужно найти значения рядом, как показано ниже

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 миль это будут точка_b, точка е и точка g

1 Ответ

0 голосов
/ 19 октября 2019

Вы можете использовать, например, простой запрос pandas, и вам не нужен алгоритм машинного обучения:

result = df.query("(A == 'point_a' | B == 'point_a') & Distance < 28")

или

result = df[((df['A'] == 'point_a') | (df['B'] == 'point_a')) & (df['Distance'] < 28)]

Результат:

         A        B  Distance
0  point_a  point_b        20
3  point_a  point_e        25
4  point_g  point_a        26

Получить набор ближайших точек:

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

Результат:

{'point_e', 'point_g', 'point_b'}
...