Шаг 170.
Введение в машинное обучение с использованием Python. Объединение алгоритмов в цепочки и конвейеры. Построение конвейеров

    На этом шаге мы рассмотрим пример построения такого контейнера.

    Давайте посмотрим, как мы можем использовать класс Pipeline, чтобы осуществить обучение SVM после масштабирования данных с помощью MinMaxScaler() (на этот раз не будем использовать решетчатый поиск). Во-первых, мы создаем объект-конвейер, передав ему список необходимых этапов. Каждый этап представляет собой кортеж, содержащий имя (любая строка на ваш выбор, за исключением строки, начинающейся с двух подчеркиваний "__") и экземпляр модели:

[In 6]:
from sklearn.pipeline import Pipeline
pipe = Pipeline([("scaler", MinMaxScaler()), ("svm", SVC())])

    Здесь мы создали два этапа: первый этап, названный "scaler", является экземпляром MinMaxScaler, а второй, названный "svm", является экземпляром SVC. Теперь мы можем построить конвейер точно так же, как и любую другую модель scikit-learn:

[In 7]:
pipe.fit(X_train, y_train)

    В данном случае pipe.fit() сначала вызывает метод fit() объекта scaler, преобразует обучающие данные, используя MinMaxScaler(), и, наконец, строит модель SVM на основе масштабированных данных. Чтобы оценить правильность модели на тестовых данных, мы просто вызываем pipe.score():

[In 8]:
print("Правильность на тестовом наборе: {:.2f}".format(pipe.score(X_test, y_test)))

Правильность на тестовом наборе: 0.97

    Когда мы вызываем pipe.score(), сначала тестовые данные масштабируются с помощью MinMaxScaler(), затем к масштабированным тестовым данным применяется построенная модель SVM (происходит вызов метода score() объекта svm). Видно, что приведенный вывод идентичен результату, который мы получили, использовав программный код, когда выполняли преобразования вручную. С помощью конвейера мы сократили программный код, необходимый для нашего процесса "предварительная обработка + классификация". Однако главное преимущество конвейера заключается в том, что сейчас мы можем использовать эту отдельную модель в качестве аргумента функции cross_val_score() или GridSearchCV.

    На следующем шаге мы рассмотрим использование конвейера, помещенного в объект GridSearchCV.




Предыдущий шаг Содержание Следующий шаг