Ich versuche, die f1_score
zu berechnen, aber ich bekomme einige Warnungen für einige Fälle, wenn ich die Methode sklearn f1_score
verwende.Wie F1-Score für Multilabel-Klassifizierung berechnen?
Ich habe ein Multilabel 5-Klassen-Problem für eine Vorhersage.
import numpy as np
from sklearn.metrics import f1_score
y_true = np.zeros((1,5))
y_true[0,0] = 1 # => label = [[1, 0, 0, 0, 0]]
y_pred = np.zeros((1,5))
y_pred[:] = 1 # => prediction = [[1, 1, 1, 1, 1]]
result_1 = f1_score(y_true=y_true, y_pred=y_pred, labels=None, average="weighted")
print(result_1) # prints 1.0
result_2 = f1_score(y_true=y_ture, y_pred=y_pred, labels=None, average="weighted")
print(result_2) # prints: (1.0, 1.0, 1.0, None) for precision/recall/fbeta_score/support
Wenn ich average="samples"
statt "weighted"
ich (0,1, 1,0, 0,1818 ..., None). Ist die Option "weighted"
nicht für ein Multilabel-Problem geeignet oder wie verwende ich die f1_score
-Methode richtig?
ich auch eine Warnung erhalten, wenn average="weighted"
mit:
„UndefinedMetricWarning. Recall und F-Score sind schlecht definiert und ohne echten Proben auf 0,0 in Etiketten gesetzt wird“
hi mein Array mit np.zeros ((1,5)) hat die Form (1,5) Ich habe gerade einen Kommentar geschrieben, um ein Beispiel zu geben, wie eine Probe aussieht, aber es ist tatsächlich die Form wie diese [[1 , 0,0,0,0] ...]. Das Problem ist, dass f1_score mit average = "micro"/"macro" arbeitet, aber nicht mit "weighted". Also meine Frage ist, "gewichtete" Option funktioniert nicht mit Multilabel oder muss ich andere Optionen wie labels/pos_label in f1_score -Funktion setzen. –
Bitte lesen Sie die Antwort. Sie können nicht mit einer Zielvariablen arbeiten, deren Form (1, 5) ist. In diesem Fall funktioniert Ihre 'f1_score' nicht, selbst wenn Sie 'micro' oder 'macro' verwenden. –
Wenn ich ravel verwende, um die Form (5,) zu erhalten, verwendet es einen Wert als eine Probe, so dass es nicht für Multilabel, z.B. Wenn ich diese Form mit durchschnittlich = "Samples" versuche, bekomme ich den Fehler "Sample-basierte Präzision, Rückruf, FScore ist außerhalb der Multilabel-Klassifikation nicht sinnvoll." Ich bekomme Arbeitsergebnisse für die Form (1,5) für Mikro und Makro (und sie sind korrekt) das einzige Problem ist für die Option Durchschnitt = "gewichtet" –