web-dev-qa-db-ja.com

sklearnを使用したroc曲線[python]

Rocライブラリを使用して理解に問題があります。

python http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html でroc曲線をプロットしたい

私は検出器(ハーカスケード、ニューロンネットワーク)を評価するプログラムを書いていて、それらを評価したいと思っています。だから私はすでに次の形式でファイルにデータを保存しています:

 0.5 TP
 0.43 FP
 0.72 FN
 0.82 TN 
 ...

tPは真陽性を意味しますが、FP-偽陽性、FN-偽陰性、TN-真陰性

私はそれを解析し、4つの配列にこのデータセットを入力します。

それならこれを入れたい

   fpr, tpr = sklearn.metrics.roc_curve(y_true, y_score, average='macro', sample_weight=None)

しかし、これを行う方法は?私の場合のy_trueとy_scoreは何ですか?その後、私はそれをfpr、tprに入れました

auc = sklearn.metric.auc(fpr, tpr)
6
petbottle

ウィキペディアの引用:

ROCは、さまざまなしきい値設定でFPR(偽陽性率)とTPR(真陽性率)をプロットすることによって作成されます。

FPRとTPRを計算するには、真のバイナリ値とターゲットスコアを関数 sklearn.metrics.roc_curve に提供する必要があります。

だからあなたの場合、私はこのようなことをします:

from sklearn.metrics import roc_curve
from sklearn.metrics import auc

# Compute fpr, tpr, thresholds and roc auc
fpr, tpr, thresholds = roc_curve(y_true, y_score)
roc_auc = auc(y_true, y_score)

# Plot ROC curve
plt.plot(fpr, tpr, label='ROC curve (area = %0.3f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--')  # random predictions curve
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.xlabel('False Positive Rate or (1 - Specifity)')
plt.ylabel('True Positive Rate or (Sensitivity)')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")

考えられるすべてのしきい値について、偽陽性率と真陽性率がどのように計算されるかをより深く理解したい場合は、 この記事 を読むことをお勧めします。

10
H. Cavalera