K-Nearest Neighbors в sklearn

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Введение в K-Nearest Neighbors

K-Nearest Neighbors (KNN) — это один из самых простых и понятных алгоритмов машинного обучения, который используется для задач классификации и регрессии. Основная идея KNN заключается в том, что объект классифицируется на основе большинства голосов его ближайших соседей. Если мы говорим о классификации, то объекту присваивается класс, который наиболее часто встречается среди его K ближайших соседей. В случае регрессии, значение объекта определяется как среднее значение его K ближайших соседей. Этот алгоритм интуитивно понятен и часто используется в качестве базового метода для сравнения с более сложными моделями.

KNN обладает рядом преимуществ. Во-первых, он не требует обучения модели, так как все вычисления происходят в момент предсказания. Это делает его очень гибким и простым в реализации. Во-вторых, KNN может работать с любыми типами данных, что делает его универсальным инструментом. Однако у него есть и недостатки, такие как высокая вычислительная сложность при больших объемах данных и чувствительность к выбору метрики расстояния и параметра K.

Кинга Идем в IT: пошаговый план для смены профессии

Установка и импорт необходимых библиотек

Для начала работы с KNN в sklearn, необходимо установить и импортировать несколько библиотек. Основные библиотеки, которые нам понадобятся, это numpy, pandas, matplotlib и, конечно же, scikit-learn. Эти библиотеки обеспечат нас всеми необходимыми инструментами для работы с данными, их визуализации и построения модели.

Python
Скопировать код
# Установка библиотек (если они еще не установлены)
!pip install numpy pandas matplotlib scikit-learn

# Импорт необходимых библиотек
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

numpy и pandas помогут нам в работе с данными, matplotlib — в их визуализации, а scikit-learn предоставит все необходимые инструменты для построения и оценки модели KNN. Убедитесь, что все эти библиотеки установлены в вашей среде разработки.

Загрузка и подготовка данных

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

Python
Скопировать код
from sklearn.datasets import load_iris

# Загрузка датасета Iris
iris = load_iris()
X = iris.data
y = iris.target

# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

Здесь мы загружаем данные и разделяем их на обучающую и тестовую выборки. Это важный шаг, так как он позволяет нам оценить производительность модели на данных, которые она не видела во время обучения. Мы используем функцию train_test_split для разделения данных, задавая размер тестовой выборки как 30% от общего объема данных и фиксируя случайное состояние для воспроизводимости результатов.

Создание и обучение модели K-Nearest Neighbors

Теперь, когда данные подготовлены, мы можем создать и обучить модель KNN. Для этого мы будем использовать класс KNeighborsClassifier из библиотеки scikit-learn. Мы зададим параметр n_neighbors равным 3, что означает, что для классификации каждого объекта будет использоваться 3 ближайших соседа.

Python
Скопировать код
# Создание модели KNN с K=3
knn = KNeighborsClassifier(n_neighbors=3)

# Обучение модели на обучающей выборке
knn.fit(X_train, y_train)

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

Оценка и визуализация результатов

После обучения модели, мы можем оценить её производительность на тестовой выборке и визуализировать результаты. Это поможет нам понять, насколько хорошо модель справляется с задачей классификации.

Python
Скопировать код
# Предсказание классов на тестовой выборке
y_pred = knn.predict(X_test)

# Оценка точности модели
accuracy = accuracy_score(y_test, y_pred)
print(f"Точность модели: {accuracy:.2f}")

# Матрица ошибок
conf_matrix = confusion_matrix(y_test, y_pred)
print("Матрица ошибок:")
print(conf_matrix)

# Отчет по классификации
class_report = classification_report(y_test, y_pred, target_names=iris.target_names)
print("Отчет по классификации:")
print(class_report)

# Визуализация матрицы ошибок
plt.figure(figsize=(8, 6))
plt.imshow(conf_matrix, interpolation='nearest', cmap=plt.cm.Blues)
plt.title('Матрица ошибок')
plt.colorbar()
tick_marks = np.arange(len(iris.target_names))
plt.xticks(tick_marks, iris.target_names, rotation=45)
plt.yticks(tick_marks, iris.target_names)
plt.ylabel('Истинный класс')
plt.xlabel('Предсказанный класс')
plt.show()

Мы используем несколько метрик для оценки производительности модели. Точность (accuracy) показывает долю правильно классифицированных объектов. Матрица ошибок (confusion_matrix) позволяет увидеть, какие классы чаще всего путаются моделью. Отчет по классификации (classification_report) предоставляет более детальную информацию о точности, полноте и F1-мере для каждого класса.

Визуализация матрицы ошибок помогает наглядно увидеть, где модель совершает ошибки. Это может быть полезно для дальнейшего улучшения модели, например, путем изменения параметра K или выбора другой метрики расстояния.

Эти шаги помогут вам реализовать K-Nearest Neighbors в sklearn и оценить его производительность. KNN — это мощный инструмент для решения задач классификации и регрессии, и его простота делает его отличным выбором для новичков в машинном обучении. Надеюсь, эта статья поможет вам лучше понять, как работает KNN и как его использовать на практике.

Читайте также