2.2. Реализация алгоритмов классификации данных Цель работы: Решение прикладных задач классификации методом k ближайших соседей. Ознакомитьс...
Условие:
Решение:
ответствии с требованиями задачи классификации методом k ближайших соседей.
Введение
Метод k ближайших соседей (k-nearest neighbors, k-NN) является одним из самых простых и популярных алгоритмов классификации данных. Он основан на идее, что объекты, близкие в пространстве признаков, скорее всего принадлежат к одному классу. В данной работе мы рассмотрим реализацию этого метода и его применение для решения прикладных задач классификации.
- Описание метода k ближайших соседей
Метод k ближайших соседей основывается на следующем принципе: для классификации нового объекта необходимо определить его класс на основе классов k ближайших к нему объектов из обучающей выборки. Классификация происходит путем голосования: объект относится к тому классу, который преобладает среди его ближайших соседей.
Алгоритм работы метода k-NN можно описать следующим образом:
-
Задать значение параметра k - количество ближайших соседей, которые будут участвовать в классификации.
-
Рассчитать расстояние между новым объектом и каждым объектом из обучающей выборки. Для этого можно использовать различные метрики, например, евклидово расстояние или манхэттенское расстояние.
-
Выбрать k объектов с наименьшими расстояниями до нового объекта.
-
Определить класс нового объекта на основе классов выбранных ближайших соседей. Для этого можно использовать простое голосование или взвешенное голосование, где каждый сосед имеет определенный вес.
-
Реализация программы для классификации методом k ближайших соседей
Для реализации программы для классификации методом k ближайших соседей мы будем использовать язык программирования Python и библиотеку scikit-learn. Scikit-learn предоставляет удобные инструменты для работы с машинным обучением, включая реализацию алгоритма k-NN.
Пример реализации программы для классификации методом k ближайших соседей:
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, классифицировали тестовые данные и вычислили точность классификации.
- Наглядная демонстрация методов классификации
Для наглядной демонстрации методов классификации можно использовать различные графические инструменты, такие как диаграммы рассеяния или графики решающих границ. Например, можно визуализировать обучающую выборку и решающую границу, полученную с помощью метода k ближайших соседей.
Пример наглядной демонстрации метода k ближайших соседей:
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 является простым и эффективным алгоритмом классификации, который может быть использован для решения различных прикладных задач.