Классификация SVM с использованием пользовательского ядра

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

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

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

Введение

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

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

После запуска виртуальной машины кликните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к 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/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/inspection -.-> lab-49097{{"Классификация SVM с использованием пользовательского ядра"}} ml/sklearn -.-> lab-49097{{"Классификация SVM с использованием пользовательского ядра"}} end

Импорт библиотек

В этом шаге мы импортируем необходимые библиотеки для этой лабораторной работы. Будем использовать 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 - это популярный алгоритм машинного обучения, используемый для классификации, регрессии и обнаружения выбросов.