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
600 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!

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