KNN нуждается в обучении? - PullRequest
0 голосов
/ 09 июля 2019

Концепция KNN заключается в поиске ближайших точек данных к требуемым данным.

поэтому до тестирования модели нет математики или процессов.

все, что он делает, - это нахождение ближайших точек K, что означает отсутствие тренировочного процесса.

если это правильно, то что происходит в процессе обучения KNN на python?

from sklearn.neighbors import KNeighborsClassifier  
classifier = KNeighborsClassifier(n_neighbors=5)  
classifier.fit(X_train, y_train) 

Тогда что-то происходит на заднем плане, когда вызывается fit.

Что происходит, если процесс не требует вычислений

1 Ответ

2 голосов
/ 09 июля 2019

KNN - это не совсем конкретный алгоритм сам по себе, а скорее метод, который вы можете реализовать несколькими способами.Идея, стоящая за ближайшими соседями , состоит в том, чтобы выбрать один или несколько примеров из обучающих данных, чтобы определить прогнозируемое значение для имеющейся выборки.Самый простой способ сделать это - просто выполнить итерацию по всему набору данных и выбрать самые близкие точки данных из набора обучающих данных.В этом случае вы можете пропустить этап подгонки или увидеть подгонку как создание вызываемой функции, которая запускает этот цикл.Даже в этом случае, если вы используете библиотеку типа scikit-learn , полезно поддерживать интерфейс, подобный всем предикторам, чтобы вы могли написать для них общий код (например, обучающий код, независимый от конкретногоиспользуемый алгоритм).

Однако вы можете делать и более умные вещи для KNN.В scikit-learn вы увидите, что KNeighborsClassifier реализует три разных алгоритма.Одним из них является грубая сила, которая просто пересекает весь набор данных, как описано, но у вас также есть BallTree ( wiki ) и KDTree ( вики ).Это структуры данных, которые могут ускорить поиск ближайших соседей, но их необходимо заранее составлять из данных.Таким образом, подходящим шагом здесь является построение структуры данных, которая поможет вам найти ближайших соседей.

...