Введение
Гиперпараметры - это параметры, которые не обучаются напрямую оценщиком. Они передаются в качестве аргументов в конструктор классов оценщиков. Тюнинг гиперпараметров оценщика - это важный шаг при построении эффективных машинно-обучаемых моделей. Он заключается в нахождении оптимальной комбинации гиперпараметров, которая приводит к наилучшим результатам работы модели.
Scikit-learn предоставляет несколько инструментов для поиска наилучших гиперпараметров: GridSearchCV и RandomizedSearchCV. В этом лабе мы рассмотрим процесс настройки гиперпараметров с использованием этих инструментов.
Советы по работе с ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки
Сначала нам нужно импортировать необходимые библиотеки для нашего анализа. Мы будем использовать sklearn.model_selection для настройки гиперпараметров.
import numpy as np
from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
Загружаем датасет
Далее, загрузим датасет, с которым будем работать. Для этого упражнения мы можем использовать любой датасет по своему выбору.
from sklearn.datasets import load_iris
## Load the iris dataset
iris = load_iris()
## Split the data into features and target
X = iris.data
y = iris.target
Определяем оценщик и сетку параметров
Теперь нам нужно определить оценщик, который мы хотим настроить, и сетку параметров, по которой мы хотим искать. Сетка параметров задает значения, которые мы хотим попробовать для каждого гиперпараметра.
from sklearn.svm import SVC
## Create an instance of the support vector classifier
svc = SVC()
## Define the parameter grid
param_grid = {'C': [0.1, 1, 10, 100], 'gamma': [0.1, 0.01, 0.001], 'kernel': ['linear', 'rbf']}
Выполняем сеточный поиск с использованием кросс-валидации
Сеточный поиск последовательно исследует все возможные комбинации гиперпараметров в указанной сетке параметров. Он оценивает производительность каждой комбинации с использованием кросс-валидации.
## Create an instance of GridSearchCV
grid_search = GridSearchCV(svc, param_grid, cv=5)
## Fit the data to perform grid search
grid_search.fit(X, y)
## Print the best combination of hyperparameters
print('Best hyperparameters:', grid_search.best_params_)
Выполняем случайный поиск с использованием кросс-валидации
Случайный поиск случайным образом выбирает подмножество из сетки параметров и оценивает производительность каждой комбинации с использованием кросс-валидации. Это полезно, когда пространство параметров велико и полный перебор не представляется возможным.
## Create an instance of RandomizedSearchCV
random_search = RandomizedSearchCV(svc, param_grid, cv=5, n_iter=10, random_state=0)
## Fit the data to perform randomized search
random_search.fit(X, y)
## Print the best combination of hyperparameters
print('Best hyperparameters:', random_search.best_params_)
Резюме
В этом практическом занятии мы узнали, как настраивать гиперпараметры оценщика с использованием GridSearchCV и RandomizedSearchCV. Мы определили оценщик и сетку параметров, а затем выполнили сеточный поиск и случайный поиск соответственно, чтобы найти наилучшую комбинацию гиперпараметров. Настройка гиперпараметров - это важный этап при построении машинно-обучаемых моделей для улучшения их производительности.