Классификация ближайшего центроида

Machine LearningMachine LearningBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

Советы по работе с ВМ

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

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/neighbors("Nearest Neighbors") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/neighbors -.-> lab-49226{{"Классификация ближайшего центроида"}} sklearn/inspection -.-> lab-49226{{"Классификация ближайшего центроида"}} ml/sklearn -.-> lab-49226{{"Классификация ближайшего центроида"}} end

Импортируем необходимые библиотеки

Сначала нам нужно импортировать необходимые библиотеки, в том числе Numpy, Matplotlib, наборы данных Scikit-learn, NearestCentroid и DecisionBoundaryDisplay.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import datasets
from sklearn.neighbors import NearestCentroid
from sklearn.inspection import DecisionBoundaryDisplay

Загружаем данные

Далее мы загружаем набор данных iris из Scikit-learn и выбираем только первые два признака для визуализации.

iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target

Создаем цветовые карты

Для целей визуализации мы создаем две цветовые карты с использованием функции ListedColormap из Matplotlib.

cmap_light = ListedColormap(["orange", "cyan", "cornflowerblue"])
cmap_bold = ListedColormap(["darkorange", "c", "darkblue"])

Создаем и настраиваем классификатор

Мы создаем экземпляр классификатора ближайшего центроида с значением сжатия (shrinkage) равным 0,2 и настраиваем его на наших данных.

clf = NearestCentroid(shrink_threshold=0.2)
clf.fit(X, y)

Предсказываем и измеряем точность

Мы предсказываем метки классов для входных данных и измеряем точность классификатора.

y_pred = clf.predict(X)
print("Accuracy: ", np.mean(y == y_pred))

Визуализируем границы решения

Мы визуализируем границы решения для классификатора с использованием функции DecisionBoundaryDisplay из Scikit-learn.

_, ax = plt.subplots()
DecisionBoundaryDisplay.from_estimator(
    clf, X, cmap=cmap_light, ax=ax, response_method="predict"
)

Строим точки данных

Мы строим точки входных данных с использованием функции scatter из Matplotlib.

plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold, edgecolor="k", s=20)

Добавляем заголовок и метки осей

Мы добавляем заголовок и метки осей к графику с использованием функций title, xlabel и ylabel из Matplotlib.

plt.title("Nearest Centroid Classification")
plt.xlabel("Sepal length")
plt.ylabel("Sepal width")

Отображаем график

Мы отображаем график с использованием функции show из Matplotlib.

plt.show()

Резюме

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