Maison > développement back-end > Tutoriel Python > Pourquoi le F1-Score de Scikit-learn produit-il un « UndefinedMetricWarning » ?

Pourquoi le F1-Score de Scikit-learn produit-il un « UndefinedMetricWarning » ?

Linda Hamilton
Libérer: 2024-11-19 21:12:02
original
578 Les gens l'ont consulté

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

UndefinedMetricWarning : Erreur de score F

Lors du calcul des scores F avec metrics.f1_score de scikit-learn, les utilisateurs peuvent rencontrer l'avertissement :

"UndefinedMetricWarning : le score F est mal défini et est défini sur 0,0 dans les étiquettes sans échantillons prédits. (y_pred). Dans de tels cas, le score F de ces étiquettes imprévues ne peut pas être calculé et est supposé être égal à 0,0.

Exemple

Considérons l'exemple suivant où l'étiquette « 2 » est absent dans les prédictions :

Ce code produira le avertissement.

Pourquoi seulement parfois ?

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'))
Copier après la connexion

L'avertissement n'apparaît que la première fois que le score F est calculé, car la plupart des environnements Python n'affichent des avertissements spécifiques qu'une seule fois. Cependant, ce comportement peut être modifié à l'aide de warns.filterwarnings('always').

Comment éviter l'avertissement

Pour éviter de voir l'avertissement, vous pouvez soit définir warns.filterwarnings('ignore') avant d'importer scikit-learn ou spécifiez explicitement les étiquettes qui vous intéressent lors du calcul du F-score, comme suit :

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal