Python で複数の roc 曲線をプロットする方法 (例付き)
機械学習における分類モデルのパフォーマンスを視覚化する 1 つの方法は、「受信機動作特性」曲線を表すROC 曲線を作成することです。
多くの場合、複数の分類モデルを 1 つのデータセットに適合させ、モデルごとに ROC 曲線を作成して、どのモデルがデータに対して最も優れたパフォーマンスを発揮するかを視覚化することが必要な場合があります。
次のステップバイステップの例は、Python で複数の ROC 曲線をプロットする方法を示しています。
ステップ 1: 必要なパッケージをインポートする
まず、いくつかの必要なパッケージを Python にインポートします。
from sklearn import metrics
from sklearn import datasets
from sklearn. model_selection import train_test_split
from sklearn. linear_model import LogisticRegression
from sklearn. set import GradientBoostingClassifier
import numpy as np
import matplotlib. pyplot as plt
ステップ 2: 偽のデータを作成する
次に、sklearn のmake_classification()関数を使用して、1000 行、4 つの予測変数、およびバイナリ応答変数を含む偽のデータセットを作成します。
#create fake dataset
X, y = datasets. make_classification (n_samples= 1000 ,
n_features= 4 ,
n_informative= 3 ,
n_redundant= 1 ,
random_state= 0 )
#split dataset into training and testing set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= .3 , random_state= 0 )
ステップ 3: 複数のモデルを当てはめて ROC 曲線をプロットする
次に、ロジスティック回帰モデル、次に勾配強調モデルをデータに適合させ、同じプロット上に各モデルの ROC 曲線をプロットします。
#set up plotting area
plt. Figure (0). clf ()
#fit logistic regression model and plot ROC curve
model = LogisticRegression()
model. fit (X_train, y_train)
y_pred = model. predict_proba (X_test)[:, 1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred)
auc = round(metrics. roc_auc_score (y_test, y_pred), 4)
plt. plot (fpr,tpr,label="Logistic Regression, AUC="+str(auc))
#fit gradient boosted model and plot ROC curve
model = GradientBoostingClassifier()
model. fit (X_train, y_train)
y_pred = model. predict_proba (X_test)[:, 1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred)
auc = round(metrics. roc_auc_score (y_test, y_pred), 4)
plt. plot (fpr,tpr,label="Gradient Boosting, AUC="+str(auc))
#add legend
plt. legend ()
青い線はロジスティック回帰モデルの ROC 曲線を示し、オレンジ色の線は勾配ブースト モデルの ROC 曲線を示します。
ROC 曲線がプロットの左上隅に近ければ近いほど、モデルはデータをカテゴリに分類することができます。
これを定量化するには、AUC (曲線の下の面積) を計算します。これにより、プロットのどの程度が曲線の下にあるかがわかります。
AUC が 1 に近づくほど、モデルは優れています。
グラフから、各モデルの次の AUC メトリクスがわかります。
- ロジスティック回帰モデルの AUC: 0.7902
- 勾配ブースト モデルの AUC: 0.9712
明らかに、勾配強調モデルはロジスティック回帰モデルよりもデータをカテゴリに分類することに成功しています。
追加リソース
次のチュートリアルでは、分類モデルと ROC 曲線に関する追加情報を提供します。