Как построить 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.

Видео по теме

ROC кривая. Что это такое и как ее построить?

Лекция 12. AUC, ROC кривые. Логистическая регрессия (Анализ данных на Python. Ч2)

ROC 🤘 для Дата Саентиста

Похожие статьи:

🔧 Как компилировать файлы Python и достичь их оптимальной производительности 🔧

🔥 Как без проблем удалить версию Питона на Linux? 🐍

🔎 Как присвоить значение бесконечности Python? 🐍

Как построить Roc кривую в Python: полное руководство с примерами 📈

🔧 Как установить в автозапуск python скрипт используя systemd 🖥️

Как вывести переменную в python: простой способ

🔍 Как проверить, оканчивается ли число на 7 в Питоне