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
Freigeben: 2024-11-19 21:12:02
Original
586 Leute haben es durchsucht

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'))
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage