# Analyse

## La boîte d'analyse

La boîte d'analyse (figure ci-dessous) est le composant final de la chaîne du module d'apprentissage, placée immédiatement après la boîte d'entraînement. Elle sert de composant dédié à l'évaluation des modèles, acceptant des entrées depuis :

* Modèles entraînés individuellement (via [**Entraîner le modèle** ](https://medomicslab.gitbook.io/medomics-docs/v1-fr/tutorials/development/entrainement#train-model-model-training-and-optimization-node)nœuds)
* Ensembles de modèles (via [**Combiner les modèles**](https://medomicslab.gitbook.io/medomics-docs/v1-fr/tutorials/development/entrainement#combine-models-combine-models-trained-in-your-scene) nœuds)

**Caractéristiques clés :**

1. **Conception sans nœud** : Contrairement aux autres boîtes, il s'agit d'un terminal d'analyse préconfiguré qui ne peut pas contenir de nœuds supplémentaires.
2. **Intégration PyCaret** : Met en œuvre `plot_model()` avec les contrôles de paramètres suivants :
   * **Métrique du graphique** (`paramètre plot` ):
     * Définit le type de visualisation d'évaluation (par défaut : 'auc')
     * Les options incluent : matrice de confusion, importance des caractéristiques, courbe ROC, etc.
   * **Échelle** (`paramètre scale` ):
     * Ajuste la résolution de la figure de sortie (plage : 0-1)
     * Des valeurs plus élevées augmentent la qualité de l'image et la taille du fichier

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FeCnj2UCDBYhlW3ebsCVo%2Fimage.png?alt=media&#x26;token=90b505d3-df04-48ee-8575-0ea230a6f116" alt=""><figcaption><p>la boîte d'analyse</p></figcaption></figure>

La boîte d'analyse représente la section « Analyse » du flux de travail en apprentissage automatique :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FyFl2iXo7FerCU3LNYPKQ%2FAnalysisBoxUsageNew.png?alt=media&#x26;token=78733a09-98bd-4144-89f6-b058627b3b2e" alt=""><figcaption></figcaption></figure>

## Le mode d'analyse

{% hint style="info" %}
Si vous préférez un résumé rapide, passez à la [section suivante](#summary-of-the-analysis-mode).
{% endhint %}

Le mode d'analyse devient disponible après l'exécution réussie d'une expérience. Lorsqu'il est activé, un panneau de résultats apparaît en bas de l'interface, affichant les résultats pour tous les pipelines de la scène en cours. Ce mode fournit une répartition détaillée des résultats organisée par pipeline et par nœud.

### **Structure des résultats par pipeline :**

Chaque pipeline, identifiable par son nom personnalisable, présente les résultats via les informations spécifiques aux nœuds suivantes :

* **Nœud Jeu de données** : Affiche la table des données d'entraînement et tous les paramètres appliqués via [la fonction setup de PyCaret.](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.setup)

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FGXzlHweNyCBZI22AhOVp%2FResultsDataset.PNG?alt=media&#x26;token=1c2fcbac-2012-4e8e-8609-759289a1b411" alt=""><figcaption><p>Résultats pour le nœud Jeu de données</p></figcaption></figure>

* **Nœud Nettoyage** : Montre les paramètres de prétraitement configurés dans [le setup de PyCaret](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.setup).

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FgfjBI43r37VABwicD0G6%2FResultsClean.PNG?alt=media&#x26;token=c31f332e-ce15-4b7a-b87d-17284222b195" alt=""><figcaption><p>Résultats pour le nœud Nettoyage</p></figcaption></figure>

* **Nœud Division** : Présente des statistiques détaillées de division, incluant le nombre d'échantillons par fold/itération et les métriques de distribution des classes.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2Fggxz8PEYC2ZYX4qI3eVF%2FResultsSplit.PNG?alt=media&#x26;token=2a53bec5-2083-41d5-b091-3e86dc3ac172" alt=""><figcaption><p>Résultats pour le nœud Division</p></figcaption></figure>

* **Nœud Modèle** : Contient l'ensemble complet des métriques de performance pour le modèle.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FKVwhiJyve5CKvBwhTJV0%2FResultsModel.PNG?alt=media&#x26;token=567ce435-09a9-4544-852c-3a38a0a3acc5" alt=""><figcaption><p>Résultats pour le nœud Modèle</p></figcaption></figure>

* **Nœud Combiner les modèles** : Fournit les métriques d'évaluation pour la sortie du modèle combiné.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2Fh0HXYh9uS4TTCqDFKCY4%2Fimage.png?alt=media&#x26;token=dd2041a2-a6d4-4b13-8480-e94180778853" alt=""><figcaption><p>Résultats pour le nœud Combiner les modèles</p></figcaption></figure>

* **Nœud Analyse** : Affiche le graphique sélectionné dans la boîte d'analyse.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FPytzigodHZHyv6cMVVNv%2FResultsAnalysis.PNG?alt=media&#x26;token=09cfc50f-0103-430f-8c74-eb68f26aa3dc" alt=""><figcaption><p>Résultats pour le nœud d'analyse</p></figcaption></figure>

{% hint style="warning" %}
***PyCaret*****&#x20;ROC (Receiver Operating Characteristic**)**/AUC (Area Under the Curve) plots**

Les graphiques AUC générés par la [*PyCaret* ](https://pycaret.gitbook.io/docs)bibliothèque sont dérivés de la [*YellowBrick* package Python](https://www.scikit-yb.org/en/latest/api/classifier/rocauc.html), qui étend le [*scikit-learn*](https://scikit-learn.org/stable/) API. Par défaut, le graphique affiche plusieurs courbes :

* La courbe ROC par classe pour chaque classe a été calculée en utilisant la méthode un-contre-tous (ce qui signifie que la classe considérée est traitée comme la classe positive et toutes les autres classes comme négatives).
* La courbe micro-moyenne est calculée en additionnant tous les vrais positifs et faux positifs à travers toutes les classes.
* La courbe macro-moyenne est la moyenne des courbes à travers toutes les classes.&#x20;

Nous reconnaissons que ces courbes peuvent être un peu déroutantes, en particulier pour la classification binaire.&#x20;

Tout en utilisant le[ *YellowBrick* package](https://www.scikit-yb.org/en/latest/api/classifier/rocauc.html) directement, nous pouvons définir des paramètres pour n'afficher que la courbe ROC classique. Cependant, nous n'avons pas trouvé de moyen de définir directement ces paramètres via notre application avec [*PyCaret* ](https://pycaret.gitbook.io/docs)pour l'instant. Nous travaillons actuellement à résoudre ce problème.
{% endhint %}

### **Finaliser et enregistrer le modèle**

Cette fonctionnalité, utilisée via le bouton '*Finaliser et enregistrer le modèle*' pour un pipeline sélectionné, effectue deux fonctions critiques via l'intégration PyCaret :

1. **Finalisation du modèle** : Réentraîne le modèle sélectionné sur l'ensemble du jeu de données en utilisant [de PyCaret `finalize_model()` fonction](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.finalize_model).
2. **Enregistrement du modèle** : Enregistre le modèle finalisé en tant que [fichier pickle](https://www.geeksforgeeks.org/python/understanding-python-pickling-example/) via [de PyCaret `save_model()` fonction](https://pycaret.readthedocs.io/en/stable/api/classification.html#pycaret.classification.save_model) sous [le `.medmodel` extension](https://medomicslab.gitbook.io/medomics-docs/v1-fr/tutorials/development/learning-module/medmodel). Le modèle enregistré apparaît dans le `modèles` sous-dossier en utilisant le nom de classe du modèle ou l'ID du nœud Model s'il a été modifié par rapport à celui par défaut ('*Modèle*').

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2Fjf8PqfKxta7NNqBzvJeQ%2FFinalizeAndSave.png?alt=media&#x26;token=6009c3d9-0d65-403f-9cb7-920e7ce252cb" alt=""><figcaption><p>Comment finaliser et enregistrer un modèle dans un pipeline donné</p></figcaption></figure>

Le processus ne nécessite aucune configuration de paramètres, préservant automatiquement tous les paramètres d'entraînement de l'expérience d'origine.

De plus, ce bouton représente la section « Modèle final » du flux de travail d'apprentissage automatique, comme illustré dans la figure suivante :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FeHXomZjRIFvrzk27kQBk%2FFinalizeAndSaveUsageNew.png?alt=media&#x26;token=183a6dfc-bfe3-432c-b193-e5afa6d3f56e" alt=""><figcaption></figcaption></figure>

### **La génération de fonctionnalités**

La fonctionnalité Générer exporte la configuration complète du pipeline sous forme de code Python exécutable dans [Jupyter Notebook](https://www.dataquest.io/blog/jupyter-notebook-tutorial/) format. Vous pouvez générer un Jupyter Notebook en utilisant le *Générer* bouton à côté d'un pipeline sélectionné. Le notebook généré, qui reflète la structure et les paramètres du pipeline, apparaît dans les `notebooks` sous-dossier en utilisant le nom actuel du pipeline comme identifiant de fichier.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FqOC4Saetrd2ezHXqco5C%2FGenerePipeline.png?alt=media&#x26;token=b31d3475-546b-4b77-b3f9-2c607a4a9972" alt=""><figcaption><p>Comment générer un Notebook pour un pipeline donné</p></figcaption></figure>

Cette fonctionnalité permet :

* Une investigation plus approfondie du processus d'entraînement
* Des modifications de code personnalisées pour l'optimisation des performances
* Une reproductibilité améliorée

De plus, vous pouvez également lancer tout notebook généré directement depuis l'application en double-cliquant simplement sur le fichier. Inversement, vous pouvez faire un clic droit et sélectionner le **"Ouvrir dans..."** option pour ouvrir votre notebook dans VSCode.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2Fqiv3OxEUkYFxCHAGCGnD%2FOpenNotebookIn.png?alt=media&#x26;token=0a267354-5343-4181-8ba7-776ae988f4b6" alt="" width="563"><figcaption><p>Différentes options pour ouvrir un Jupyter Notebook généré</p></figcaption></figure>

Un exemple de notebook généré, ouvert dans VS Code, est présenté ci-dessous.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2F43FQE34wTOHFsSYqJO5d%2FGeneratedNotebook.PNG?alt=media&#x26;token=919d7d0a-54e6-4534-aeb0-0f7421955531" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FdUPlHSRcwKilnD0rJ814%2FGeneratedNotebook1.PNG?alt=media&#x26;token=7702b3d5-d687-4044-9c62-2fa19b5f7ac0" alt=""><figcaption><p>Exemple d'un Jupyter Notebook généré</p></figcaption></figure>

{% hint style="warning" %}
Les conventions de nommage des pipelines affectent directement cette fonctionnalité. Consultez la section suivante pour plus de détails.
{% endhint %}

### **Gérer les pipelines**

L'interface Gérer les pipelines sert deux objectifs principaux :

1. **Aperçu du pipeline** : Affiche un résumé structuré de tous les nœuds composant chaque pipeline et de leurs connexions.
2. **Contrôle du nommage** : Permet de renommer les pipelines, ce qui met à jour simultanément :
   * Le nom de fichier du notebook dans la fonctionnalité Générer
   * Toutes les références de suivi des expériences

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2F9j1EiZ9HfjtdDPAhSxGl%2FManagePipelines.png?alt=media&#x26;token=5eb8021e-84db-4366-9b48-1fc4ad52c5d5" alt=""><figcaption><p>Comment accéder et utiliser le panneau Gérer les pipelines</p></figcaption></figure>

### **La case de sélection du nœud**

En modes Analyse et Résultats, une case à cocher est disponible en haut de chaque nœud exécutable. Utilisez ce contrôle pour afficher sélectivement les résultats de nœuds spécifiques, en masquant la sortie des autres. Une case verte indique que le nœud est un composant obligatoire de tous les pipelines ; par conséquent, ses résultats seront toujours affichés.

Dans l'exemple suivant, seuls les résultats du nœud coché **Clean2** sont affichés, tandis que les autres pipelines sont masqués.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FEhZEaCLFWufOySb1RUZG%2FNodeCheckbox.png?alt=media&#x26;token=5aac6036-003c-4799-a184-9440f982cbfc" alt=""><figcaption><p>Illustration de l'utilisation de la case à cocher du nœud</p></figcaption></figure>

### La fonctionnalité de mise en évidence

Cette fonctionnalité améliore la navigation en modes Analyse et Résultats en appliquant dynamiquement des codes couleur distincts aux nœuds et pipelines sélectionnés. Elle met en évidence l'ensemble du chemin d'exécution d'un pipeline choisi, le distinguant facilement des autres. Le système utilise le schéma de couleurs suivant pour indiquer le statut :

* **Orange** : Utilisé pour les nœuds non exécutés et les arêtes de connexion d'un pipeline non exécuté.
* **Vert** : Indique un nœud sélectionné et exécuté avec succès.
* **Bleu** : Met en évidence tous les éléments (nœuds et arêtes) du pipeline actuellement sélectionné.

Cette fonctionnalité est particulièrement utile dans des scènes complexes comportant plusieurs pipelines, car elle simplifie le suivi et la comparaison des résultats. La figure suivante illustre ces codes couleur dans le contexte de différentes interactions utilisateur.

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FKgzyvzfPcT1E7xJQmFhF%2FHighlightFeatureFinal.png?alt=media&#x26;token=c86aad04-046f-4725-8ca1-64a617c5b239" alt=""><figcaption><p>Illustration de la fonctionnalité de mise en évidence pour différentes interactions</p></figcaption></figure>

### Résumé du mode Analyse

Une présentation complète du mode Analyse est présentée dans la figure suivante :

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2F65mJGc0k4o6mdDhOZZSS%2FBreakdownAnalysisMode.png?alt=media&#x26;token=6187d1bf-085e-4a20-88c5-9cf4c00ec902" alt=""><figcaption><p>Répartition du mode Analyse</p></figcaption></figure>

À la page suivante, vous en apprendrez davantage sur le nouveau type de scène '*Expérimental*' et sur la manière dont vous pouvez l'utiliser comme environnement de test pour vos expériences d'apprentissage automatique.
