Ваша модель возвращает те же расстояния для любого K, потому что ваш K не меняет расстояния между вашими точками данных.
K-Nearest-Neigbours просто находит ближайшие соседние точки в вашей функции пробел , K действительно сколько из них вы ищете, а не как далеко они удалены друг от друга.
Простой примерbe
X = [[0,0],[0,5],[5,0],[5,5][4,4]]
Как график рассеяния, он выглядит как
![](https://i.stack.imgur.com/79fOo.png)
, поэтому ваша матрица расстояний определяет расстояния между всеми точками:
[0,0]: [0. , 5. , 5. , 5.65685425, 7.07106781],
[0,5]: [0. , 4.12310563, 5. , 5. , 7.07106781],
[5,0]: [0. , 4.12310563, 5. , 5. , 7.07106781],
[5,5]: [0. , 1.41421356, 5. , 5. , 7.07106781],
[4,4]: [0. , 1.41421356, 4.12310563, 4.12310563, 5.65685425]]
В первом ряду показаны расстояния от точки [0,0] до любой другой точки
- до ее 0
- до [0,5]расстояние составляет 5
- до [5,0], расстояние составляет 5
- до [4,4], его (в моем случае евклидово расстояние) квадратный корень 4 * 4 + 4 * 4итак 5.65 ..
- до [5,5] евклидово расстояние равно 7.07106781
Поэтому независимо от того, сколько точек вы ищете ( K ) расстояния всегда одинаковы.