Постройте кривую ROC на Python

Lakshay Kapoor 30 Январь 2023 10 Июль 2021
  1. Определение кривой ROC в Python
  2. Библиотека Scikit-Learn на Python
  3. Код Python для построения кривой ROC
  4. Код Пояснение
Постройте кривую ROC на Python

В этом руководстве мы поможем вам узнать больше об этой функции Python и о методе, который вы можете использовать для построения кривой ROC в качестве вывода программы.

Определение кривой ROC в Python

Термин кривая ROC обозначает кривую рабочих характеристик приемника. Эта кривая в основном является графическим представлением эффективности любой модели классификации при всех порогах классификации.

У этой кривой два параметра:

  • True Positive Rate (TPR) - означает реальную, то есть истинную чувствительность
  • Уровень ложноположительных результатов (FPR) - означает псевдо, то есть ложную чувствительность

Оба параметра известны как рабочие характеристики и используются в качестве факторов для определения кривой ROC.

В Python эффективность модели определяется по площади под кривой (AUC). Таким образом, наиболее эффективная модель имеет AUC, равную 1, а наименее эффективная модель имеет AUC, равную 0,5.

Библиотека Scikit-Learn на Python

Библиотека Scikit-learn - одна из самых важных библиотек с открытым исходным кодом, используемых для машинного обучения на Python. Эта библиотека состоит из множества инструментов для таких задач, как классификация, кластеризация и регрессия.

В этом руководстве используется несколько функций из этой библиотеки, которые помогут построить кривую ROC. Эти функции:

  • make_classification - эта функция импортируется, потому что она помогает генерировать случайную задачу классификации n-классов, создавая кластеры точек.
  • RandomForestClassifier - эта функция импортируется как Random Forest Classifier и используется в качестве образца модели в этом руководстве, на котором строится кривая ROC.
  • train_test_split - эта функция используется для разделения всех данных на два подмножества (Train и Test), которые используются для обучения и тестирования данных.
  • roc_curve - эта функция используется для возврата кривой ROC данной модели.

Код Python для построения кривой ROC

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve

def plot_roc_curve(fper, tper):
    plt.plot(fper, tper, color='red', label='ROC')
    plt.plot([0, 1], [0, 1], color='green', linestyle='--')
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Receiver Operating Characteristic Curve')
    plt.legend()
    plt.show()
    
data_X, cls_lab = make_classification(n_samples=2100, n_classes=2, weights=[1,1], random_state=2)
train_X, test_X, train_y, test_y = train_test_split(data_X, cls_lab, test_size=0.5, random_state=2)

model =RandomForestClassifier()
model.fit(train_X, train_y)

prob = model.predict_proba(test_X)
prob = probs[:, 1]
fper, tper, thresholds = roc_curve(test_y, prob)
plot_roc_curve(fper, tper)

Выход:

Кривая ROC в Python

Код Пояснение

Сначала импортируются все библиотеки и функции, необходимые для построения кривой ROC. Затем определяется функция под названием plot_roc_curve, в которой все критические факторы кривой, такие как цвет, метки и заголовок, упоминаются с использованием библиотеки Matplotlib. После этого с помощью функции make_classification создаются случайные выборки, а затем они разделяются на train и test наборы с помощью функции train_test_split. Здесь соотношение данных train-test составляет 0.50. Затем используется алгоритм RandomForestClassifier для подгонки данных train_X и train_y. Наконец, функция roc_curve используется для построения кривой ROC.

Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn