Вы можете использовать, например, простой запрос 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'}