Кнн алгоритм, как это работает - PullRequest
0 голосов
/ 02 мая 2018

Когда я начал понимать этот алгоритм, я не совсем понял, как он должен работать. У меня есть набор данных, и у меня есть новые данные, которые необходимо классифицировать. Набор данных:

2   2   a
3   5   a
1   8   b
3   16  b
4   12  a
5   20  a

И новые данные:

1   2

теперь мне нужно классифицировать новый набор как "a" или "b". Я могу рассчитать расстояние для каждого набора. sqrt((aNew-Ai)^2+(bNew-Bi)^2) для каждого набора данных. с расстояния у меня есть эти данные:

    a   b   dist    class
new 1   2   ?       ?
old 2   2   1,0     a
old 3   5   5,8     a
old 1   8   8,1     b
old 3   16  16,3    b
old 4   12  12,6    a
old 5   20  20,6    a

И, например, К равно 6. Как мне классифицировать мои новые данные?

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Вам необходимо найти расстояние между новой точкой данных и всеми точками в вашем наборе данных.

  1. Расположите эти расстояния в порядке возрастания.
  2. Выберите первое число K из списка.
  3. Получить класс с выбранного расстояния.
  4. Теперь проверьте, какой класс имеет наибольшее количество повторений или голосов.

Для реализации в Java см. здесь

0 голосов
/ 04 мая 2018

В вашем примере это a, потому что это наиболее распространенное значение в списке ближайших соседей k (6).
Но K должно быть неравномерным числом, чтобы предотвратить неоднозначную классификацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...