Heim >Backend-Entwicklung >Python-Tutorial >Warum erzeugt der F1-Score von Scikit-learn eine „UndefinedMetricWarning'?

Warum erzeugt der F1-Score von Scikit-learn eine „UndefinedMetricWarning'?

Linda Hamilton
Linda HamiltonOriginal
2024-11-19 21:12:02582Durchsuche

Why Does Scikit-learn's F1-Score Produce an

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn