KNeighborsClassifier изменение расстояния - PullRequest
0 голосов
/ 28 июня 2018

Я хотел бы изменить расстояние, используемое KNeighborsClassifier, от sklearn. Под расстоянием я подразумеваю тот, который находится в пространстве признаков, чтобы увидеть, кто является соседом точки. В частности, я хочу использовать следующее расстояние:

d (X1, X2) = 0,1 * | X1 [0] - X2 [0] | + 0,9 * | X1 [1] - X2 [1] |

Спасибо.

1 Ответ

0 голосов
/ 28 июня 2018

Просто определите свою метрику следующим образом:

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 и пользовательских мерах расстояния здесь

Только убедитесь, что согласно официальной документации, ваш пользовательский показатель должен соответствовать следующим свойствам

  1. Неотрицательность: d (x, y)> = 0
  2. Идентичность: d (x, y) = 0 тогда и только тогда, когда x == y
  3. Симметрия: d (x, y) = d (y, x)
  4. Треугольное неравенство: d (x, y) + d (y, z)> = d (x, z)

Вот пример пользовательской метрики.

...