Heim >Backend-Entwicklung >Python-Tutorial >Warum erzeugt der F1-Score von Scikit-learn eine „UndefinedMetricWarning'?
UndefinedMetricWarning: F-Score-Fehler
Bei der Berechnung von F-Scores mit scikit-learns metrics.f1_score stoßen Benutzer möglicherweise auf die Warnung:
„UndefinierteMetrikWarnung: Der F-Score ist schlecht definiert und wird in Etiketten ohne vorhergesagte Stichproben auf 0,0 gesetzt.“
Verstehen Sie die Warnung
Dies Eine Warnung tritt auf, wenn einige Beschriftungen in den wahren Beschriftungen (y_test) nicht in den vorhergesagten Beschriftungen (y_pred) erscheinen. In solchen Fällen kann der F-Score für diese unvorhergesehenen Labels nicht berechnet werden und wird mit 0,0 angenommen.
Beispiel
Betrachten Sie das folgende Beispiel, bei dem Label „2“ fehlt in den Vorhersagen:
y_test = [1, 10, 35, 9, 7, 29, 26, 3, 8, 23, 39, 11, 20, 2, 5, 23, 28, 30, 32, 18, 5, 34, 4, 25, 12, 24, 13, 21, 38, 19, 33, 33, 16, 20, 18, 27, 39, 20, 37, 17, 31, 29, 36, 7, 6, 24, 37, 22, 30, 0, 22, 11, 35, 30, 31, 14, 32, 21, 34, 38, 5, 11, 10, 6, 1, 14, 12, 36, 25, 8, 30, 3, 12, 7, 4, 10, 15, 12, 34, 25, 26, 29, 14, 37, 23, 12, 19, 19, 3, 2, 31, 30, 11, 2, 24, 19, 27, 22, 13, 6, 18, 20, 6, 34, 33, 2, 37, 17, 30, 24, 2, 36, 9, 36, 19, 33, 35, 0, 4, 1] y_pred = [1, 10, 35, 7, 7, 29, 26, 3, 8, 23, 39, 11, 20, 4, 5, 23, 28, 30, 32, 18, 5, 39, 4, 25, 0, 24, 13, 21, 38, 19, 33, 33, 16, 20, 18, 27, 39, 20, 37, 17, 31, 29, 36, 7, 6, 24, 37, 22, 30, 0, 22, 11, 35, 30, 31, 14, 32, 21, 34, 38, 5, 11, 10, 6, 1, 14, 30, 36, 25, 8, 30, 3, 12, 7, 4, 10, 15, 12, 4, 22, 26, 29, 14, 37, 23, 12, 19, 19, 3, 25, 31, 30, 11, 25, 24, 19, 27, 22, 13, 6, 18, 20, 6, 39, 33, 9, 37, 17, 30, 24, 9, 36, 39, 36, 19, 33, 35, 0, 4, 1] print(metrics.f1_score(y_test, y_pred, average='weighted'))
Dieser Code erzeugt die Warnung.
Warum nur manchmal?
Die Warnung erscheint nur beim ersten Mal Der Zeit-F-Score wird berechnet, da die meisten Python-Umgebungen bestimmte Warnungen nur einmal anzeigen. Dieses Verhalten kann jedoch mithilfe von warnings.filterwarnings('always') geändert werden.
So vermeiden Sie die Warnung
Um zu vermeiden, dass die Warnung angezeigt wird, können Sie Folgendes festlegen warnings.filterwarnings('ignore') vor dem Importieren von scikit-learn oder geben Sie explizit die Beschriftungen an, an denen Sie bei der Berechnung des F-Scores interessiert sind, wie folgt:
# Ignore warnings warnings.filterwarnings('ignore') metrics.f1_score(y_test, y_pred, average='weighted') # Explicitly specify labels unique_labels = np.unique(y_pred) metrics.f1_score(y_test, y_pred, average='weighted', labels=unique_labels)
Das obige ist der detaillierte Inhalt vonWarum erzeugt der F1-Score von Scikit-learn eine „UndefinedMetricWarning'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!