2017-07-17 2 views
2

Ich mache eine k-fach XV auf einem vorhandenen Datenrahmen, und ich muss den AUC-Score erhalten. Das Problem ist - manchmal enthalten die Testdaten nur 0s und nicht 1s!roc_auc_score - Nur eine Klasse in y_true

Ich versuchte this Beispiel verwenden, aber mit einer unterschiedlichen Anzahl:

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) 

Und ich bekomme diese Ausnahme:

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

Gibt es eine Abhilfe, die es funktioniert in solchen Fällen machen kann?

Antwort

2

könnten Sie verwenden try-except um den Fehler zu vermeiden:

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 

Jetzt können Sie auch die roc_auc_score auf Null gesetzt wird, wenn es nur eine Klasse vorhanden ist. Allerdings würde ich das nicht tun. Ich denke, Ihre Testdaten sind sehr unausgewogen. Ich würde vorschlagen, stattdessen eine geschichtete K-Falte zu verwenden, so dass Sie mindestens beide Klassen haben.

Verwandte Themen