sklearn log_loss unterschiedliche Anzahl von Klassen
Ich bin mit log_loss mit sklearn
from sklearn.metrics import log_loss
print log_loss(true, pred,normalize=False)
und ich haben folgenden Fehler:
ValueError: y_true and y_pred have different number of classes 38, 2
Es ist wirklich seltsam für mich, da die arrays, die Aussehen gilt:
print pred.shape
print np.unique(pred)
print np.unique(pred).size
(19191L,)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35 36 37]
38
print true.shape
print np.unique(true)
print np.unique(true).size
(19191L,)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35 36 37]
38
Was ist falsch mit der log_loss? Warum es den Fehler auslöst?
Beispieldaten:
pred: array([ 0, 1, 2, ..., 3, 12, 16], dtype=int64)
true: array([ 0, 1, 2, ..., 3, 12, 16])
- Können Sie nach ein paar Daten für pred und wahr ist? Es sieht aus wie Ihre Etiketten werden falsch übergeben.
- Hinzugefügt, um die original-Beitrag
- Melden Sie den Verlust ist für die Bewertung der Genauigkeit der Wahrscheinlichkeiten - es erwartet Sie ein array von Wahrscheinlichkeiten im Zusammenhang mit allen möglichen Labels (Sie übergeben, nur label). Ich glaube, Ihr pred-variable muss ein array von n-arrays, wobei n die Anzahl der Etiketten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist einfach, Sie sind über die Vorhersage und nicht die Wahrscheinlichkeit, dass Ihre Vorhersage. Ihre pred variable enthält
aber log_loss es sollte so etwas wie:
Werden, um diese Wahrscheinlichkeiten mit der Funktion
predict_proba
:Innerhalb der log_loss Methode, true, array fit ist und verwandelt durch ein LabelBinarizer was ändert seine Dimensionen. So, die Prüfung, die wahre und pred haben ähnliche Dimensionen bedeutet nicht, dass log_loss Methode funktioniert, weil die wahren Dimensionen ändern. Wenn Sie nur mit binary-Klassen, ich schlage vor, Sie verwenden diese log_loss Kosten Funktion sonst für mehrere Klassen, diese Methode funktioniert nicht.
Aus der log_loss Dokumentation:
Muss man die Wahrscheinlichkeiten nicht die Vorhersage labels.