Она измеряет способность модели различать положительные и отрицательные классы, независимо от выбранного порога классификации. Значение ROC AUC варьируется от 0 до 1, где 1 соответствует идеальной модели, а 0.5 — случайному угадыванию.
scikit-learn
.import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score
# Генерация данных
X, y = make_classification(n_samples=1000, n_features=20, 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)
# Предсказание вероятностей для тестовой выборки
y_pred_prob = model.predict_proba(X_test)[:, 1]
# Вычисление ROC AUC
roc_auc = roc_auc_score(y_test, y_pred_prob)
print(f"ROC AUC Score: {roc_auc:.2f}")
make_classification
создает набор данных для задачи классификации.train_test_split
делит данные на обучающую и тестовую выборки.LogisticRegression
используется для обучения модели логистической регрессии.predict_proba
возвращает вероятности для каждого класса. Нас интересует вероятность положительного класса (1), поэтому берем второй столбец результата ([:, 1]
).roc_auc_score
вычисляет AUC на основе истинных меток (y_test
) и предсказанных вероятностей (y_pred_prob
).Ставь 👍 и забирай 📚 Базу знаний