2017-07-17 59 views
2

私は既存のデータフレームでk倍XVをやっています。私はAUCスコアを取得する必要があります。 問題は - テストデータには0だけが含まれ、1ではなく、roc_auc_score - y_trueには1つのクラスしかありません

私はthis例を使用して、異なる番号を試してみました:

import numpy as np 
from sklearn.metrics import roc_auc_score 
y_true = np.array([0, 0, 0, 0]) 
y_scores = np.array([1, 0, 0, 0]) 
roc_auc_score(y_true, y_scores) 

そして、私はこの例外を取得:

ValueError: Only one class present in y_true. ROC AUC score is not defined in that case.

は、それがこのような場合に動作させることができます任意の回避策はありますか?

答えて

2

あなたは試す-以外のエラーを防ぐために使用することができます

import numpy as np 
from sklearn.metrics import roc_auc_score 
y_true = np.array([0, 0, 0, 0]) 
y_scores = np.array([1, 0, 0, 0]) 
try: 
    roc_auc_score(y_true, y_scores) 
except ValueError: 
    pass 

今、あなたは存在する唯一の一つのクラスがある場合、ゼロであるとroc_auc_scoreをも設定することができます。しかし、私はこれをしません。私はあなたのテストデータが非常に不均衡であると思います。代わりに層別化されたK-foldを使用することをお勧めします。少なくとも、両方のクラスが存在するようにしてください。

関連する問題