Введение
Scikit-learn - это популярная библиотека на Python, которая предоставляет простой и эффективный API для машинного обучения. Одной из ключевых особенностей scikit-learn является его встроенный API визуализации, благодаря которому легко генерировать визуализации для моделей машинного обучения. В этом лабе мы исследуем, как использовать API визуализации scikit-learn для сравнения кривых ROC для двух различных классификаторов.
Советы по работе с ВМ
После запуска ВМ кликните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Загрузка данных и обучение SVC
Начнем с загрузки датасета с виноградными винами и преобразования его в задачу бинарной классификации. Затем обучим классификатор на векторах поддержки на наборе обучающих данных.
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.metrics import RocCurveDisplay
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
X, y = load_wine(return_X_y=True)
y = y == 2
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
svc = SVC(random_state=42)
svc.fit(X_train, y_train)
Построение кривой ROC
Далее мы построим кривую ROC с использованием функции RocCurveDisplay.from_estimator. Эта функция принимает на вход обученный классификатор, тестовый набор данных и истинные метки, и возвращает объект, который можно использовать для построения кривой ROC. Затем мы вызовем метод show(), чтобы отобразить график.
svc_disp = RocCurveDisplay.from_estimator(svc, X_test, y_test)
svc_disp.show()
Обучение случайного леса и построение кривой ROC
В этом шаге мы обучим классификатор случайного леса и построим его кривую ROC рядом с кривой ROC для SVC. Для этого мы создадим новый объект RandomForestClassifier, обучим его на тренировочных данных, а затем создадим новый объект RocCurveDisplay с использованием этого классификатора. Мы также передадим параметр ax в эту функцию, чтобы построить кривые на одной оси. Наконец, мы вызовем метод plot() объекта svc_disp, чтобы построить кривую ROC для SVC.
from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier(n_estimators=10, random_state=42)
rfc.fit(X_train, y_train)
ax = plt.gca()
rfc_disp = RocCurveDisplay.from_estimator(rfc, X_test, y_test, ax=ax, alpha=0.8)
svc_disp.plot(ax=ax, alpha=0.8)
plt.show()
Обзор
В этом лабе мы изучили, как использовать API визуализации scikit-learn для построения кривых ROC для двух различных классификаторов. Начали с загрузки датасета с виноградными винами и обучения классификатора на векторах поддержки на тренировочных данных. Затем построили кривую ROC для этого классификатора с использованием функции RocCurveDisplay. Наконец, обучили классификатор случайного леса и построили его кривую ROC рядом с кривой ROC для SVC. API визуализации scikit-learn позволяет легко сравнивать разные классификаторы и визуализировать их производительность.