Maison >développement back-end >Tutoriel Python >Pourquoi « UndefinedMetricWarning » n'apparaît-il qu'une seule fois lors du calcul du score F1 ?

Pourquoi « UndefinedMetricWarning » n'apparaît-il qu'une seule fois lors du calcul du score F1 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-15 19:41:02398parcourir

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

UndefinedMetricWarning : F-score non défini pour les étiquettes sans échantillons prédits

Dans scikit-learn, la métrique f1_score calcule le score F1, qui mesure l’exactitude d’un modèle de classification. Cependant, le calcul nécessite la présence d'échantillons prédits pour chaque étiquette dans la variable cible (y_test). Si certaines étiquettes sont manquantes dans les échantillons prédits (y_pred), le score F1 de ces étiquettes devient indéfini, ce qui entraîne un message d'erreur :

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

Pourquoi l'erreur ne se produit qu'une seule fois

Bien que le message d'erreur suggère une métrique non définie, il s'agit en fait d'un avertissement qui n'apparaît qu'une seule fois par défaut. En effet, Python traite les avertissements différemment des erreurs. Par défaut, la plupart des environnements affichent des avertissements spécifiques une seule fois, même si la condition sous-jacente persiste.

Résoudre l'avertissement non défini

Pour résoudre l'avertissement, il est crucial de s'assurer que toutes les étiquettes de y_test sont également présentes dans y_pred. Cela peut être déterminé en comparant les ensembles d'étiquettes :

set(y_test) - set(y_pred)

Si le résultat est un ensemble vide, toutes les étiquettes ont été prédites et il n'y aura pas de scores F1 non définis.

Éviter les avertissements répétés

S'il est important de voir l'avertissement à chaque fois qu'il se produit, la fonction warns.filterwarnings() peut être utilisé pour modifier le comportement de traitement des avertissements :

import warnings
warnings.filterwarnings('always')

Ignorer les étiquettes sans échantillons prédits

Alternativement, des étiquettes spécifiques peuvent être exclues du calcul du score F1 en spécifiant les étiquettes d'intérêt :

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

Cela garantit que les étiquettes manquantes dans les échantillons prédits ne sont pas prises en compte dans le calcul du score, éliminant ainsi le avertissement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn