Когда я начал разбираться в этом алгоритме, я не совсем понимал, как он должен работать. У меня есть набор данных, и у меня есть новые данные, которые нужно классифицировать. набор данных:
2 2 a
3 5 a
1 8 b
3 16 b
4 12 a
5 20 a
И новые данные:
1 2
теперь мне нужно классифицировать новый набор как «а» или «б».
Я могу рассчитать расстояние для каждого набора. 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
И напр. K равно 6. Как мне классифицировать мои новые данные?
В вашем примере это a
, потому что это наиболее частое значение в списке ближайших соседей k (6).
Но K должно быть нечетным числом, чтобы исключить неоднозначную классификацию.
Вам нужно найти расстояние между новой точкой данных и всеми точками в вашем наборе данных.
Для реализации на Java обратитесь к здесь
Вы вычисляете ближайших соседей
k
, а затем результатом классификации является класс, который чаще всего встречается среди этих известных экземпляровk
.