Heim >Backend-Entwicklung >Python-Tutorial >Warum erscheint „UndefinedMetricWarning' bei der Berechnung des F1-Scores nur einmal?

Warum erscheint „UndefinedMetricWarning' bei der Berechnung des F1-Scores nur einmal?

Linda Hamilton
Linda HamiltonOriginal
2024-11-15 19:41:02409Durchsuche

Why Does `UndefinedMetricWarning` Appear Only Once When Calculating F1 Score?

UndefinedMetricWarning: F-Score Undefiniert für Etiketten ohne vorhergesagte Proben

In scikit-learn berechnet die f1_score-Metrik den F1-Score, der misst die Genauigkeit eines Klassifizierungsmodells. Die Berechnung erfordert jedoch das Vorhandensein vorhergesagter Stichproben für jede Bezeichnung in der Zielvariablen (y_test). Wenn bestimmte Labels in den vorhergesagten Stichproben (y_pred) fehlen, wird der F1-Score für diese Labels undefiniert, was zu einer Fehlermeldung führt:

UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.

Warum der Fehler nur einmal auftritt

Obwohl die Fehlermeldung auf eine undefinierte Metrik hindeutet, handelt es sich tatsächlich um eine Warnung, die standardmäßig nur einmal angezeigt wird. Dies liegt daran, dass Python Warnungen anders behandelt als Fehler. Standardmäßig werden in den meisten Umgebungen bestimmte Warnungen nur einmal angezeigt, auch wenn die zugrunde liegende Bedingung weiterhin besteht.

Auflösen der UndefinedMetricWarning

Um die Warnung aufzulösen, ist es wichtig, dies sicherzustellen Alle Labels in y_test sind auch in y_pred vorhanden. Dies kann durch Vergleichen der Etikettensätze ermittelt werden:

set(y_test) - set(y_pred)

Wenn das Ergebnis ein leerer Satz ist, wurden alle Etiketten vorhergesagt und es gibt keine undefinierten F1-Scores.

Wiederholte Warnungen vermeiden

Wenn es wichtig ist, die Warnung jedes Mal zu sehen, wenn sie auftritt, kann die Funktion warnings.filterwarnings() verwendet werden, um das Verhalten bei der Warnungsbehandlung zu ändern:

import warnings
warnings.filterwarnings('always')

Ignorieren von Labels ohne vorhergesagte Proben

Alternativ können bestimmte Labels von der F1-Score-Berechnung ausgeschlossen werden, indem die Labels von Interesse angegeben werden:

metrics.f1_score(y_test, y_pred, average='weighted', labels=np.unique(y_pred))

Dies stellt sicher, dass in den vorhergesagten Stichproben fehlende Beschriftungen bei der Bewertungsberechnung nicht berücksichtigt werden, wodurch die Warnung entfällt.

Das obige ist der detaillierte Inhalt vonWarum erscheint „UndefinedMetricWarning' bei der Berechnung des F1-Scores nur einmal?. 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