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つのサブセット(Train
とTest
)に分割するために使用されます。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)
出力:
コードの説明
まず、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 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