2.2. Реализация алгоритмов классификации данных
Цель работы: Решение прикладных задач классификации методом k
ближайших соседей. Ознакомиться с методами классификации. Разработать
программу для наглядной демонстрации методов.
Первый раздел курсовой работы должен содержать описание
математических методов, расчетов и примера реализации программы в
со
ответствии с требованиями задачи классификации методом k ближайших соседей.
Введение
Метод k ближайших соседей (k-nearest neighbors, k-NN) является одним из самых простых и популярных алгоритмов классификации данных. Он основан на идее, что объекты, близкие в пространстве признаков, скорее всего принадлежат к одному классу. В данной работе мы рассмотрим реализацию этого метода и его применение для решения прикладных задач классификации.
1. Описание метода k ближайших соседей
Метод k ближайших соседей основывается на следующем принципе: для классификации нового объекта необходимо определить его класс на основе классов k ближайших к нему объектов из обучающей выборки. Классификация происходит путем голосования: объект относится к тому классу, который преобладает среди его ближайших соседей.
Алгоритм работы метода k-NN можно описать следующим образом:
1. Задать значение параметра k - количество ближайших соседей, которые будут участвовать в классификации.
2. Рассчитать расстояние между новым объектом и каждым объектом из обучающей выборки. Для этого можно использовать различные метрики, например, евклидово расстояние или манхэттенское расстояние.
3. Выбрать k объектов с наименьшими расстояниями до нового объекта.
4. Определить класс нового объекта на основе классов выбранных ближайших соседей. Для этого можно использовать простое голосование или взвешенное голосование, где каждый сосед имеет определенный вес.
2. Реализация программы для классификации методом k ближайших соседей
Для реализации программы для классификации методом k ближайших соседей мы будем использовать язык программирования Python и библиотеку scikit-learn. Scikit-learn предоставляет удобные инструменты для работы с машинным обучением, включая реализацию алгоритма k-NN.
Пример реализации программы для классификации методом k ближайших соседей:
```python
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Загрузка данных
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.2, random_state=42)
# Создание и обучение модели k-NN
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# Классификация тестовых данных
y_pred = knn.predict(X_test)
# Вычисление точности классификации
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
```
В данном примере мы использовали набор данных Iris, который содержит информацию о трех различных видов ирисов. Мы разделили данные на обучающую и тестовую выборки, создали и обучили модель k-NN с параметром k=3, классифицировали тестовые данные и вычислили точность классификации.
3. Наглядная демонстрация методов классификации
Для наглядной демонстрации методов классификации можно использовать различные графические инструменты, такие как диаграммы рассеяния или графики решающих границ. Например, можно визуализировать обучающую выборку и решающую границу, полученную с помощью метода k ближайших соседей.
Пример наглядной демонстрации метода k ближайших соседей:
```python
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
# Визуализация обучающей выборки
cmap = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cmap, edgecolor='k')
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.title('Training data')
# Визуализация решающей границы
h = 0.02 # Шаг сетки
x_min, x_max = X_train[:, 0].min() - 1, X_train[:, 0].max() + 1
y_min, y_max = X_train[:, 1].min() - 1, X_train[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = knn.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.8, cmap=cmap)
plt.show()
```
В данном примере мы визуализировали обучающую выборку, где каждый класс обозначен разным цветом. Затем мы построили решающую границу, которая показывает, как модель k-NN разделяет классы. Такая визуализация позволяет наглядно представить работу метода k ближайших соседей.
Заключение
В данной курсовой работе мы описали математические методы и принципы работы метода k ближайших соседей, реализовали программу для классификации данных с использованием этого метода, а также продемонстрировали его работу на примере набора данных Iris. Метод k-NN является простым и эффективным алгоритмом классификации, который может быть использован для решения различных прикладных задач.