Как построить Roc кривую в Python: полное руководство с примерами 📈
Чтобы построить ROC-кривую в Python, вам потребуется использовать библиотеку scikit-learn. Вот простой пример кода:
from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt
# Загрузка модели и данных для тестирования
model = load_model()
X_test, y_test = load_test_data()
# Получение предсказанных вероятностей
y_pred = model.predict_proba(X_test)[:, 1]
# Вычисление значений для ROC-кривой
fpr, tpr, thresholds = roc_curve(y_test, y_pred)
# Построение ROC-кривой
plt.plot(fpr, tpr)
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("ROC Curve")
plt.show()
# Вычисление площади под ROC-кривой (AUC)
auc = roc_auc_score(y_test, y_pred)
print(f"AUC: {auc}")
В этом примере мы сначала загружаем модель и тестовые данные. Затем мы используем метод predict_proba() для получения предсказанных вероятностей. Затем используем функцию roc_curve() для вычисления значений FPR (False Positive Rate), TPR (True Positive Rate) и пороговых значений. Затем мы строим ROC-кривую с помощью библиотеки matplotlib. Наконец, мы вычисляем площадь под кривой (AUC) с помощью функции roc_auc_score() и выводим ее на экран.
Детальный ответ
Как построить ROC-кривую в Python
ROC-кривая (Receiver Operating Characteristic curve) - это инструмент для оценки качества бинарного классификатора. Она позволяет наглядно представить компромисс между чувствительностью (True Positive Rate) и специфичностью (False Positive Rate) классификатора при различных пороговых значениях.
В Python существует несколько библиотек, которые помогают построить ROC-кривую. Одна из самых популярных библиотек - scikit-learn. Давайте рассмотрим, как использовать scikit-learn для построения ROC-кривой.
Шаг 1: Загрузка данных и подготовка модели
Прежде чем построить ROC-кривую, нам понадобится модель классификатора и набор данных для обучения и тестирования.
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# Создание синтетического набора данных
X, y = make_classification(n_samples=1000, n_features=10, random_state=42)
# Разделение данных на обучающий и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Создание и обучение модели логистической регрессии
model = LogisticRegression()
model.fit(X_train, y_train)
В приведенном коде мы используем функцию make_classification из scikit-learn для создания синтетического набора данных. Затем мы разделяем данные на обучающий и тестовый наборы с помощью функции train_test_split. Затем мы создаем и обучаем модель логистической регрессии.
Шаг 2: Вычисление ROC-кривой и AUC
После того, как модель обучена, мы можем вычислить ROC-кривую и площадь под ней (AUC) с использованием функции roc_curve из библиотеки scikit-learn.
from sklearn.metrics import roc_curve, auc
# Вычисление вероятности принадлежности к положительному классу
y_prob = model.predict_proba(X_test)[:, 1]
# Вычисление значений FPR и TPR для различных пороговых значений
fpr, tpr, thresholds = roc_curve(y_test, y_prob)
# Вычисление площади под ROC-кривой (AUC)
roc_auc = auc(fpr, tpr)
В этом коде мы используем функцию predict_proba для вычисления вероятностей принадлежности к положительному классу для тестового набора данных. Затем мы используем функцию roc_curve для расчета значений FPR и TPR для различных пороговых значений. Наконец, мы используем функцию auc для вычисления площади под ROC-кривой.
Шаг 3: Визуализация ROC-кривой
Теперь, когда у нас есть значения FPR и TPR, мы можем визуализировать ROC-кривую с помощью библиотеки matplotlib.
import matplotlib.pyplot as plt
# Визуализация ROC-кривой
plt.plot(fpr, tpr, label='ROC-кривая (AUC = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0, 1])
plt.ylim([0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC-кривая')
plt.legend(loc="lower right")
plt.show()
В последнем фрагменте кода мы используем функцию plot из matplotlib для построения ROC-кривой. Затем мы добавляем диагональную линию, показывающую случайный классификатор. Мы также настраиваем оси и добавляем подписи.
Теперь мы можем исполнить весь код и посмотреть, как выглядит наша ROC-кривая.
Заключение
Построение ROC-кривой в Python с помощью библиотеки scikit-learn - это простой и эффективный способ визуализации и оценки качества бинарного классификатора. Мы рассмотрели основные шаги этого процесса, который включает подготовку данных, обучение модели, вычисление ROC-кривой и визуализацию.
Надеюсь, эта статья была полезна и поможет вам лучше понять, как построить ROC-кривую в Python.