Введение
В этом лабораторном занятии мы научимся использовать методы опорных векторов (Support Vector Machines, SVM) для классификации выборки с использованием пользовательского ядра. Мы будем использовать библиотеку scikit-learn для выполнения классификации SVM с пользовательским ядром. SVM - это популярный алгоритм машинного обучения, используемый для классификации, регрессии и обнаружения выбросов. SVM работает путем создания границы или линии (гиперплоскости), которая разделяет данные на классы.
Советы по работе с виртуальной машиной
После запуска виртуальной машины кликните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импорт библиотек
В этом шаге мы импортируем необходимые библиотеки для этой лабораторной работы. Будем использовать numpy, matplotlib, scikit-learn и DecisionBoundaryDisplay.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.inspection import DecisionBoundaryDisplay
Загрузка данных
В этом шаге мы загрузим датасет iris с использованием модуля datasets библиотеки scikit-learn. Мы выберем первые два признака датасета и присвоим их переменной X. Также присвоим целевую переменную Y.
iris = datasets.load_iris()
X = iris.data[:, :2]
Y = iris.target
Создание пользовательского ядра
В этом шаге мы создадим пользовательское ядро. Пользовательское ядро будет скалярным произведением двух матриц. Мы создадим матрицу M со значениями [[2, 0], [0, 1.0]]. Затем умножим матрицы X и Y на M и возьмем их скалярное произведение.
def my_kernel(X, Y):
"""
Мы создаем пользовательское ядро:
(2 0)
k(X, Y) = X ( ) Y.T
(0 1)
"""
M = np.array([[2, 0], [0, 1.0]])
return np.dot(np.dot(X, M), Y.T)
Создание классификатора SVM
В этом шаге мы создадим экземпляр классификатора SVM и подгоним наши данные. Будем использовать пользовательское ядро, созданное на предыдущем шаге.
clf = svm.SVC(kernel=my_kernel)
clf.fit(X, Y)
Построение границы решения
В этом шаге мы построим поверхность решения и векторы поддержки. Мы будем использовать модуль DecisionBoundaryDisplay из модуля inspection библиотеки scikit-learn для построения границы решения. Также построим точечный график для тренировочных точек.
ax = plt.gca()
DecisionBoundaryDisplay.from_estimator(
clf,
X,
cmap=plt.cm.Paired,
ax=ax,
response_method="predict",
plot_method="pcolormesh",
shading="auto",
)
plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.title("3-Class classification using Support Vector Machine with custom kernel")
plt.axis("tight")
plt.show()
Резюме
В этом практическом занятии мы узнали, как использовать методы опорных векторов (Support Vector Machines, SVM) для классификации выборки с использованием пользовательского ядра. Мы использовали библиотеку scikit-learn для выполнения классификации SVM с пользовательским ядром. Мы загрузили датасет iris, создали пользовательское ядро, создали экземпляр классификатора SVM и подобрали наши данные, а также построили границу решения и векторы поддержки. SVM - это популярный алгоритм машинного обучения, используемый для классификации, регрессии и обнаружения выбросов.