J'essaie de calculer le f1_score
mais je reçois des avertissements dans certains cas lorsque j'utilise la méthode sklearn f1_score
.Comment calculer F1-Score pour la classification Multilabel?
J'ai un problème de classe 5 multilabel pour une prédiction.
import numpy as np
from sklearn.metrics import f1_score
y_true = np.zeros((1,5))
y_true[0,0] = 1 # => label = [[1, 0, 0, 0, 0]]
y_pred = np.zeros((1,5))
y_pred[:] = 1 # => prediction = [[1, 1, 1, 1, 1]]
result_1 = f1_score(y_true=y_true, y_pred=y_pred, labels=None, average="weighted")
print(result_1) # prints 1.0
result_2 = f1_score(y_true=y_ture, y_pred=y_pred, labels=None, average="weighted")
print(result_2) # prints: (1.0, 1.0, 1.0, None) for precision/recall/fbeta_score/support
Lorsque j'utilise average="samples"
au lieu de "weighted"
I get (0.1, 1.0, 0,1818 ..., Aucun). L'option "weighted"
n'est-elle pas utile pour un problème multilabel ou comment utiliser la méthode f1_score
correctement?
Je reçois aussi un avertissement lors de l'utilisation average="weighted"
:
« UndefinedMetricWarning:. Rappel et F-score sont mal définis et être mis à 0,0 dans les étiquettes sans véritables échantillons »
Salut mon tableau avec np.zeros ((1,5)) a la forme (1,5) je viens d'écrire un commentaire pour donner un exemple à quoi ressemble un échantillon mais il est réel la forme comme ceci [[1 , 0,0,0,0] ...]. Le problème est que f1_score fonctionne avec average = "micro"/"macro" mais pas avec "pondéré". Donc ma question est de savoir si l'option "pondérée" ne fonctionne pas avec multilabel ou si je dois définir d'autres options comme labels/pos_label dans la fonction f1_score. –
Lire la réponse, s'il vous plaît. Vous ne pouvez pas travailler avec une variable cible dont la forme est (1, 5). Dans ce cas, votre 'f1_score' ne fonctionne pas même avec une moyenne 'micro' ou 'macro'. –
Lorsque j'utilise le ravel pour obtenir la forme (5,), il utilise une valeur comme un échantillon, donc cela ne fonctionne pas pour multilabel, par ex. quand j'essaie cette forme avec average = "samples", j'obtiens l'erreur "précision basée sur l'échantillon, rappel, fscore n'a pas de sens en dehors de la classification multilabel." Je reçois des résultats de travail pour la forme (1,5) pour micro et macro (et ils sont corrects) le seul problème est pour l'option moyenne = "pondérée" –