Добро пожаловать в первую часть моей новой серии статей «От теории к практике: алгоритмы машинного обучения». Каждую неделю я буду обсуждать разные алгоритмы машинного обучения и демонстрировать, как применять их к обычным наборам данных.

В этой первой статье мы углубимся в основы машины опорных векторов. Я дам базовый обзор того, как работает алгоритм. Затем мы применим теорию на практике, реализовав алгоритм на Python и запустив его на наборе данных Iris.

Я надеюсь, что вы найдете эту серию полезной и информативной. Давайте начнем!

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

Чтобы понять, как это работает, рассмотрим простой пример с двумя классами: положительный и отрицательный. В этом случае алгоритм SVM попытается найти гиперплоскость, максимально разделяющую положительные и отрицательные примеры. Расстояние между гиперплоскостью и ближайшими примерами из каждого класса называется запасом. Алгоритм SVM пытается максимизировать запас, так как это приведет к классификатору с самой высокой способностью к обобщению.

Теперь давайте рассмотрим набор данных радужной оболочки. Этот набор данных содержит 150 примеров, по 50 примеров из каждого из трех классов: Iris-Setosa, Iris-Versicolor и Iris-Virginica. Каждый пример имеет четыре характеристики: длина чашелистика, ширина чашелистика, длина лепестка и ширина лепестка. Мы можем использовать SVM для создания классификатора, который может предсказать класс нового цветка ириса на основе этих четырех признаков.

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

iris = datasets.load_iris()
X = iris.data
y = iris.target

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

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Далее нам нужно выбрать соответствующую функцию ядра. Функция ядра используется для отображения данных из исходного пространства признаков в пространство более высокой размерности, где они могут быть линейно разделимы. Общие варианты для функции ядра включают линейное ядро, полиномиальное ядро ​​и ядро ​​радиальной базисной функции (RBF).

clf = SVC(kernel='rbf')

После того, как мы выбрали функцию ядра, мы можем обучить классификатор SVM, используя обучающий набор. Это включает в себя поиск гиперплоскости, которая максимально разделяет различные классы в многомерном пространстве.

clf.fit(X_train, y_train)

Наконец, мы можем оценить производительность классификатора на тестовом наборе, измерив его точность, воспроизводимость и полноту. Точность — это доля примеров, которые были правильно классифицированы, в то время как точность — это доля предсказанных положительных примеров, которые на самом деле были положительными, а полнота — это доля фактических положительных примеров, которые были правильно предсказаны.

accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='micro')
recall = recall_score(y_test, y_pred, average='micro')
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)

Если вам нужен код, проверьте также Блокноты Google Colab.

ПОДКЛЮЧАЙТЕСЬ В СОЦИАЛЬНЫХ СЕТЯХ

LinkedIn: https://www.linkedin.com/in/salih-enes-metin/