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 () 

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

青い線はロジスティック回帰モデルの ROC 曲線を示し、オレンジ色の線は勾配ブースト モデルの ROC 曲線を示します。

ROC 曲線がプロットの左上隅に近ければ近いほど、モデルはデータをカテゴリに分類することができます。

これを定量化するには、AUC (曲線の下の面積) を計算します。これにより、プロットのどの程度が曲線の下にあるかがわかります。

AUC が 1 に近づくほど、モデルは優れています。

グラフから、各モデルの次の AUC メトリクスがわかります。

  • ロジスティック回帰モデルの AUC: 0.7902
  • 勾配ブースト モデルの AUC: 0.9712

明らかに、勾配強調モデルはロジスティック回帰モデルよりもデータをカテゴリに分類することに成功しています。

追加リソース

次のチュートリアルでは、分類モデルと ROC 曲線に関する追加情報を提供します。

ロジスティック回帰の概要
ROC 曲線を解釈する方法 (例あり)
AUC スコアはどれくらいが良いと考えられますか?

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です