Задание 1. Обучение линейного SVM
Дан набор данных:
import numpy as np
X = np.array([
[1, 1],
[2, 2],
[3, 2],
[6, 6],
[7, 7],
[8, 6]
])
y = np.array([0, 0, 0, 1, 1, 1])
Необходимо:
- Создать
Pipeline из StandardScaler и SVC.
- Использовать
линейное ядро kernel="linear".
- Установить
C=1.0.
- Обучить
модель.
- Определить
классы объектов [2, 2] и [7, 6].
- Вывести
количество и индексы опорных векторов.
- Объяснить
роль опорных векторов при построении разделяющей границы.
Задание 2. Исследование параметра C
Используя make_classification, необходимо:
- Создать
200 наблюдений с 5 признаками.
- Разделить
данные на обучающую и тестовую выборки.
- Обучить
линейный SVM при C=0.1, C=1 и C=10.
- Использовать
масштабирование признаков.
- Вычислить
точность классификации для каждого значения C.
- Сравнить
результаты.
- Объяснить,
как параметр C влияет на баланс между шириной зазора и штрафом за
нарушения.
Задание 3. Сравнение линейного и RBF-ядер
Используя набор данных make_circles, необходимо:
- Сгенерировать
300 наблюдений.
- Разделить
данные на обучающую и тестовую выборки.
- Обучить
модель SVM с линейным ядром.
- Обучить
модель SVM с RBF-ядром.
- Для
RBF сравнить gamma=0.1 и gamma=1.
- Вычислить
точность моделей.
- Объяснить,
почему ядерная функция позволяет формировать нелинейные границы.