Python で ROC 曲線をプロットする

Lakshay Kapoor 2023年1月30日
  1. Python での ROC 曲線の定義
  2. Scikit-Python でライブラリを学ぶ
  3. ROC 曲線をプロットする Python コード
  4. コードの説明
Python で ROC 曲線をプロットする

このガイドでは、この Python 関数と、プログラム出力として ROC 曲線をプロットするために使用できる方法について詳しく知るのに役立ちます。

Python での ROC 曲線の定義

ROC 曲線という用語は、受信者動作特性曲線を表します。この曲線は基本的に、すべての分類しきい値での分類モデルのパフォーマンスをグラフで表したものです。

この曲線には 2つのパラメータがあります。

  • 真陽性率(TPR)-実際の、つまり真の感度を表します
  • 偽陽性率(FPR)-偽陽性率、つまり偽陽性率を表します

両方のパラメーターは動作特性として知られており、ROC 曲線を定義するための要素として使用されます。

Python では、モデルの効率は、曲線の下の領域(AUC)を確認することによって決定されます。したがって、最も効率の高いモデルの AUC は 1 に等しく、最も効率の低いモデルの AUC は 0.5 に等しくなります。

Scikit-Python でライブラリを学ぶ

Scikit-learn ライブラリは、Python で機械学習を実行するために使用される最も重要なオープンソースライブラリの 1つです。このライブラリは、分類、クラスタリング、回帰などのタスクのための多くのツールで構成されています。

このチュートリアルでは、ROC 曲線のプロットに役立ついくつかの関数がこのライブラリから使用されます。これらの関数は次のとおりです。

  • make_classification - この関数は、点のクラスターを作成することによってランダムな n クラス分類問題を生成するのに役立つためインポートされます。
  • RandomForestClassifier - この関数は Random Forest Classifier としてインポートされ、ROC 曲線が作成されるこのチュートリアルのサンプルモデルとして使用されます。
  • train_test_split - この関数は、データ全体を、データのトレーニングとテストに使用される 2つのサブセット(TrainTest)に分割するために使用されます。
  • roc_curve - この関数は、特定のモデルの ROC 曲線を返すために使用されます。

ROC 曲線をプロットする Python コード

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)

出力:

Python の ROC 曲線

コードの説明

まず、ROC 曲線をプロットするために必要なすべてのライブラリと関数がインポートされます。次に、plot_roc_curve と呼ばれる関数が定義されます。この関数では、Matplotlib ライブラリを使用して、色、ラベル、タイトルなどの曲線のすべての重要な要素が記述されます。その後、make_classification 関数を使用してランダムなサンプルを作成し、train_test_split 関数を使用してそれらを train セットと test セットに分割します。ここで、データの train-test 比は 0.50 です。次に、RandomForestClassifier アルゴリズムを使用して、train_X および train_y データを適合させます。最後に、roc_curve 関数を使用して ROC 曲線をプロットします。

著者: Lakshay Kapoor
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