Bonjour,

Je dois faire tourner sur un cluster avec un Os Ubuntu un script qui ouvre un modèle entraîné de deep learning qui teste ce modèle et imprime une courbe ROC, génère une matrice de confusion et un rapport de classification. Comme je voudrais récupérer ces données pour les inventorier dans un rapport (je dois faire tourner le script sur de nombres architecture deep learning et tout noter serait fastidieux) je souhaiterais exporter la courbe ROC, la matrice de confusion et le rapport de classification dans des formats simples et recépérables. J'ai pu pour l'instant exporter la matrice de confusion au format CSV grâce soit à une conversion en un Pandas Dataframe soit à un array Pandas, mais je ne parviens pas à convertir le rapport de classification en un dataframe Pandas avant de le sauver au format .csv.
Pour convertir le rapport de classification en un dataframe Pandas, j'utilise la fonction suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
def precision_recall_fscore_support_metrics2df(prfs, labels):
    df = pd.DataFrame()
    for p, r, f, s, label in zip(prfs[0], prfs[1], prfs[2], prfs[3], dataset.target_names):
        rowdata = {}
        rowdata['precision'] = p
        rowdata['recall'] = r
        rowdata['f1-score'] = f
        rowdata['support'] = s
        df = df.append(pd.DataFrame.from_dict({label: rowdata}, orient='index'))
    return df[['precision', 'recall', 'f1-score', 'support']]
que j'appelle de cette manière en passant par paramètres les différents labels du rapport de classification en affectant chaque attributs respectivement à p, r, f, et s grâce à la fonction Zip.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
# Call of function to convert the Classification Report Scikit-Learn into a Pandas DataFrame
    s_zip = 'prfs'
    p = metrics.precision_score(truth, predicted_classes)
    r = metrics.recall_score(truth, predicted_classes)
    f = metrics.f1_score(truth, predicted_classes)
    s = metrics.support_score(truth, predicted_classes)
    t_zip = [p, r, f, s]
    prfs_zipped = zip(s_zip, t_zip)
 
    cr_as_df = precision_recall_fscore_support_metrics2df(prfs_zipped, classes)
    cr_as_df
    print(cr_as_df)
    cr_as_df.to_csv('/Data/exp42cpi_a/training/json/classificationReportPdDataFrame.csv', index=False)
Cependant le code s'arrête en pleine exécution avec le retour suivant :
"AttributeError: module 'sklearn.metrics' has no attribute 'support_score'"

donc en fait si j'arrive à transformer les 3 premières métriques de base du classification report de Scikit-Learn, je ne parviens pas à exporter le support.

Quelqu'un peut-il m'aider ?