Просто определите свою метрику следующим образом:
def mydist(X1, X2):
return 0.1 * abs(X1[0] - X2[0]) + 0.9*abs(X1[1] - X2[1])
Затем инициализируйте ваш KNeighboursClassifier с помощью параметра metric
, подобного этому
clf = KNeighborsClassifier(n_neighbors=3,metric=mydist,)
Вы можете узнать больше о расстояниях, доступных в sklearn и пользовательских мерах расстояния здесь
Только убедитесь, что согласно официальной документации, ваш пользовательский показатель должен соответствовать следующим свойствам
- Неотрицательность: d (x, y)> = 0
- Идентичность: d (x, y) = 0 тогда и только тогда, когда x == y
- Симметрия: d (x, y) = d (y, x)
- Треугольное неравенство: d (x, y) + d (y, z)> = d (x, z)
Вот пример пользовательской метрики.