Нелинейная классификация с использованием метода опорных векторов (SVM)

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

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

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

Введение

В этом практическом занятии (лабораторной работе) вы научитесь выполнять бинарную классификацию с использованием нелинейного метода опорных векторов (Support Vector Machine, SVM) с ядром радиальной базисной функции (Radial Basis Function, RBF). Целью предсказания является результат операции XOR над входными данными. Карта цветов иллюстрирует функцию принятия решений, обученную методом SVM. Для выполнения этой задачи мы будем использовать библиотеку Python scikit-learn.

Советы по виртуальной машине

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49309{{"Нелинейная классификация с использованием метода опорных векторов (SVM)"}} end

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

На этом шаге мы импортируем необходимые библиотеки для выполнения данной задачи. Мы будем использовать numpy и matplotlib для визуализации данных, а scikit-learn для классификации с использованием метода опорных векторов (SVM).

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm

Генерация данных

На этом шаге мы сгенерируем данные для обучения и тестирования классификатора на основе метода опорных векторов (SVM). Мы сгенерируем 300 случайных точек данных с двумя признаками. Целью предсказания является результат операции XOR над входными данными.

np.random.seed(0)
X = np.random.randn(300, 2)
Y = np.logical_xor(X[:, 0] > 0, X[:, 1] > 0)

Обучение модели

На этом шаге мы обучим классификатор на основе метода опорных векторов (SVM) с ядром радиальной базисной функции (RBF) с использованием сгенерированных данных.

clf = svm.NuSVC(gamma="auto")
clf.fit(X, Y)

Визуализация функции принятия решений

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

xx, yy = np.meshgrid(np.linspace(-3, 3, 500), np.linspace(-3, 3, 500))
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.imshow(
    Z,
    interpolation="nearest",
    extent=(xx.min(), xx.max(), yy.min(), yy.max()),
    aspect="auto",
    origin="lower",
    cmap=plt.cm.PuOr_r,
)
contours = plt.contour(xx, yy, Z, levels=[0], linewidths=2, linestyles="dashed")
plt.scatter(X[:, 0], X[:, 1], s=30, c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.xticks(())
plt.yticks(())
plt.axis([-3, 3, -3, 3])
plt.show()

Резюме

В этом практическом занятии (лабораторной работе) мы научились выполнять бинарную классификацию с использованием нелинейного метода опорных векторов (SVM) с ядром радиальной базисной функции (RBF). Мы сгенерировали данные с двумя признаками и целевой переменной, представляющей собой результат операции XOR, которую нужно предсказать. Затем мы обучили классификатор SVM на сгенерированных данных и визуализировали функцию принятия решений, обученную методом SVM.