В этом блоге мы обсудим алгоритм классификации KNN.

KNN (K ближайших соседей) — это алгоритм обучения с учителем, используемый для классификации. Используется для бинарной или многоклассовой классификации, но у каждого достоинства есть несколько недостатков, которые мы обсудим.

KNN также называют непараметрическим, ленивым учеником, потому что он не предполагает от себя функциональную форму модели, чтобы избежать неправильного моделирования, как некоторые другие алгоритмы.

Давайте посмотрим, как работает KNN. K определяет количество ближайших соседей вокруг точки данных.

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

В KNN мы вычисляем расстояние от каждого ближайшего соседа, а затем сортируем их в порядке возрастания, скажем, если у нас есть пять точек данных, то у нас есть каждая точка, связанная с кластером, новая точка данных будет назначена доминирующему кластеру, например:

теперь у нас есть 2 разных кластера, и новые точки данных представлены в круге, теперь мы рассчитаем расстояние до каждой точки в кластере и отсортируем их в порядке возрастания.

.

у нас есть разные метрики для расчета расстояния между двумя точками данных.
o Манхэттенское расстояние
o Евклидово расстояние
o Расстояние Минковского
o Расстояние Хэмминга

мы используем евклидово расстояние, потому что это кратчайшее расстояние среди них на основе значений K, мы выберем K точек данных кратчайшего расстояния рядом с точкой данных и назначим ему доминирующий кластер, в нашем примере синий кластер является доминирующим, тогда новая точка данных будет назначена синий кластер.

Но как определить оптимальное количество значений K
с помощью метода локтя.

Метод локтя - это график, построенный с количеством значений K в зависимости от частоты ошибок. График, который мы получаем, представляет собой кривую в форме локтя, где частота ошибок внезапно снижается, тогда это будет наше оптимальное количество K соседей.

В этом верхнем мы получаем оптимальный результат при K = 5 изначально, но мы получаем оптимальный результат при K = 12.

Код:

from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbor=5)
classifier .fit(X_train, y_train)
y_pred = classifier.predict(X_test)

Этот верхний код подходит для подготовки нашей модели

error_rate = []
для i в диапазоне (1,40):
knn = KNeighborsClassifier(n_neighbors=i)
knn.fit(X_train,y_train)
pred_i = knn. предсказать (X_test)
error_rate.append (np.mean (pred_i! = y_test))

Чтобы проверить точность нашей модели, мы используем classification_report, он предоставит все наши показатели, такие как точность_оценки, точность, отзыв, F1-оценка.

из sklearn.metrics импорта classification_report
print (classification_report (y_test, y_pred))

Счастливого обучения

Спасибо за чтение.