2017-02-06 5 views
0

私は、バイナリ分類モデルのAUCを計算するためにsklearnを使用しています:は、どのように私は否定クラスのAUCを取得する必要がありますか?

roc_auc_score(Y_test_binary, plc.predict_proba(X_test, y_true)) 

それは0.810477872581を返します。私の理解に基づいて、それはモデルが正のクラスをどれだけうまく識別しているかを表しています。

はしかし、私はまた、他の側面を知りたい:私も陰性クラスのためのAUCを計算したいと思います。私はどうすればいいのですか?私は "平均"パラメータで遊ぶべきでしょうか?

============================================== ==========

「平均=なし」のドキュメントによると、「クラスごとのスコアを返さない」ことができているようです。しかし、それはまだ一つの値だけを返します。

>>> import numpy as np 
>>> from sklearn.metrics import roc_auc_score 
>>> y_true = np.array([0, 0, 1, 1]) 
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8]) 
>>> roc_auc_score(y_true, y_scores, average=None) 
0.75 

は、私はそれが負のクラスのためにAUC話すことは理にかなっていることを確認していないクラス1のための1つの番号とクラス0

答えて

0

のための1つの番号を期待バイナリ分類問題。正のクラスで計算されたのはちょうど(1 - AUCスコア)と言います。 averageパラメータは唯一のマルチクラスの問題のために使用されている

>>> (y_true == 0).astype(np.int32) 
array([1, 1, 0, 0], dtype=int32) 

>>> roc_auc_score(y_true == 0, y_scores) 
0.25 

>>> import numpy as np 
>>> from sklearn.metrics import roc_auc_score 
>>> y_true = np.array([0, 0, 1, 1]) 
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8]) 
>>> roc_auc_score(y_true, y_scores) 
0.75 

あなたはy_trueのラベルをswithcと0.25を得ることができますのはあなたの例を再利用してみましょう、あなたの自己を説得する

+0

私は実際には同じ考えを持っていました。しかし、y_true = np.array([0、0、1、1])、y_scores = np.array([0.1、0.1、0.9、0.9])の例を考えてみましょう。この場合、カルセッサーは両方のクラスを非常によく区別できます。 class1にのためのAUCはclass0のAUCは0である間、両方とも1であるべきと思われる1です。 – Munichong

関連する問題