Настройка конвейера
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 48 из 58.
Конвейер можно настраивать, как и любую модель, включая шаги очистки. Каждый параметр задаётся названием шага, двумя символами подчёркивания, а затем названием параметра:
pipe = make_pipeline(SimpleImputer(), DecisionTreeClassifier(random_state=0))
grid = {"simpleimputer__strategy": ["mean", "median", "most_frequent"],
"decisiontreeclassifier__max_depth": [2, 4, 6, 8]}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)make_pipeline называет каждый шаг по имени его класса, в нижнем регистре. Для 200 запусков модельной ракеты, достигавшей высоты 300 м или нет, оценки для 12 настроек:
На каждом фолде заново обучается весь конвейер, в том числе и заполнение пропусков, поэтому ни один фолд не заглядывает в строки, на которых его проверяют.
Задание
СреднеМузыкальная школа хочет узнать, какие ученики, изучающие игру на скрипке, сдадут экзамен на класс. Стартовый код считывает три значения k, а поиск по сетке параметров для конвейера останавливается с ошибкой.
- Исправь два ключа сетки, чтобы поиск подбирал стратегию заполнителя пропусков и число соседей k-NN.
- Выведи лучшие настройки, точность при перекрёстной проверке и точность на тестовой выборке, как показано ниже.
Другая школа, со значениями 2, 4, 6:
Best: mean fills, 6 neighbors
Cross-validated accuracy: 0.720
Test accuracy: 0.820Попробуйте сами
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
# Ученики-скрипачи: сдали экзамен на уровень (1) или нет (0); некоторые журналы занятий
# и оценки чтения с листа отсутствуют
students = pd.read_csv("violins.csv")
X = students.drop(columns="passed")
y = students["passed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = [int(input()), int(input()), int(input())]
# Этот поиск завершается ошибкой: исправьте сетку параметров
pipe = make_pipeline(SimpleImputer(), StandardScaler(), KNeighborsClassifier())
grid = {
"strategy": ["mean", "median"],
"n_neighbors": ks,
}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр7Переобучение
Недообучение и переобучениеКривые обученияРегуляризацияПроверочные выборкиПовторение: настройка дерева10Конвейеры
КонвейерыСмешанные столбцыЗаполнение пропусков в конвейереНастройка конвейераПовторение: очистка данных и прогнозирование2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск моделиПотренируйтесь самостоятельно: Онлайн-компилятор Python