Je souhaite implémenter la métrique de mesure F dans python afin de gérer les classes multiples pour les valeurs prédites. En fait, les valeurs prédites y_pred sont multi-classes et les valeurs corrigées sont une classe.Implémentation de la métrique F-measure lorsque les valeurs prédites sont multi-classes
Exemple:
y_pred = [[11,12], 12, 12, [11,12], ...]
y_true = [11, 12, 11, 12, .. .]
Comment puis-je calculer la mesure F dans ce cas? et comment l'implémenter?
J'ai testé le code suivant (fondé en https://stats.stackexchange.com/questions/21551/how-to-compute-precision-recall-for-multiclass-multilabel-classification) avec deux fichiers file1.csv (y compris toutes les classes de prédiction, chaque ligne peut contenir plus d'une classe) et file2.csv (y compris toutes les valeurs corrigées, chaque ligne en contient une seule class):
import pandas as pd
def precision(y_true, y_pred):
i = set(y_true).intersection(y_pred)
len1 = len(y_pred)
if len1 == 0:
return 0
else:
return len(i)/len1
def recall(y_true, y_pred):
i = set(y_true).intersection(y_pred)
return len(i)/len(y_true)
def f1(y_true, y_pred):
p = precision(y_true, y_pred)
r = recall(y_true, y_pred)
if p + r == 0:
return 0
else:
return 2 * (p * r)/(p + r)
if __name__ == '__main__':
y_pred_df = pd.read_csv('file1.csv', skipinitialspace=True, sep='\t', header=None)
y_pred = y_pred_df.values
y_true_df = pd.read_csv('file2.csv', header=None)
y_true = y_true_df.values
print(f1(y_true[:,0], y_pred[:,0]))
Le code ci-dessus ne fonctionne pas. Comment puis-je implémenter F-measure dans mon cas?
Merci beaucoup,
Répondu à mon commentaire – Quickbeam2k1
Pourriez-vous dire s'il vous plaît, ce qui ne fonctionne pas spécifiquement? Y a-t-il un message d'erreur? Le résultat est-il faux? À quoi ressemble votre ensemble de données? – Quickbeam2k1