À l'issue de ce TP, vous aurez découvert

Présentation des nouveautés sur la branche de ce TP

Récupérer la branche du TP :

git checkout 3_start_tp_identifier_les_drift_avec_deepchecks

Les nouveautés sur cette branche sont les suivantes :

Dans votre terminal, avec le bon environnement activé, lancer la commande :

pip install -r requirements.txt

Cette commande vérifie que tout est bien installé, et installe notamment deepchecks

Pour explorer l'outil deepchecks, nous allons faire une première étude dans un notebook.

  1. Vérifier que l'environnement mlops_3 est activée : source activate mlops_3
  2. Pour utiliser votre kernel dans le notebook, lancer dans un terminal la
    commande : python -m ipykernel install --user --name=mlops_3
  3. Cliquer sur le "➕" bleu en haut à droite
  4. Cliquer sur Notebook >> Python3 (ipykernel)
  5. Sélectionner votre kernel (mlops_3)
  6. Vérifie que le notebook est fonctionnel exécutant from deepchecks.tabular.suites import production_suite

Si le kernel ne marche pas, essayer de redémarrer votre environnement de TP : File > Hub Control Panel > Stop server > Start server.

Maintenant que l'on a un notebook fonctionnel, nous allons utiliser sqlalchemy pour réaliser des requêtes sur la base
PostGreSql de monitoring.

  1. Créer une cellule d'import
    from sqlalchemy import create_engine
    import pandas as pd
    
    1. Créer une connection à la base de données
      python
      engine = create_engine('postgresql://postgres:postgres@postgres:5432/postgres')
  2. Lire les données
    monitoring_df = pd.read_sql('monitoring_sells_forecast', engine)
    
    La table résultante ressemble au tableau suivant

    0

    High School

    100

    1.0

    8437.341966

    2023-06-23 10:30:34.466971+00:00

    1

    Bachelor

    12

    23200.0

    9736.099105

    2023-06-23 12:28:40.090749+00:00

    2

    Bachelor

    12

    23200.0

    9736.099105

    2023-06-23 12:28:40.932153+00:00

    Les colonnes contiennent les informations suivantes :
    • index : L'id de l'inférence
    • education, age, income : les données fournies par l'utilisateur
    • inference : la valeur de l'inférence retournée
    • datetime : un timestamp de la prédiction en utc
    Charger les données d'entraînementPour ce TP, les données utilisées pour l'entraînement du modèle sont disponibles dans ./data/customer_data.csvLes charger avec pandas :
    training_df = pd.read_csv("/home/jovyan/Formation-MLOps-3/data/customer_data.csv")
    

Pour réaliser une comparaison de ces jeux de données, nous allons utiliser la suite de test production_suite

from deepchecks.tabular.suites import full_suite
from deepchecks.tabular import Dataset

suite = full_suite()
variables = ['education', 'age', 'income']
cat_features = ['education']
result = suite.run(Dataset(training_df[variables], cat_features=cat_features), Dataset(monitoring_df[variables], cat_features=cat_features),  )

Deepchecks permet normalement de présenter directement un widget dans le notebook.
Malheureusement, notre infrastructure de TP ne nous permet (actuellement pas) de le visionner.
Nous allons donc sauvegarder cela sous forme html.

result.save_as_html('deepchecks_results.html')

Double-cliquer, sur le fichier généré pour le visualiser. Puis cliquer dans le bandeau en haut sur trust.

Finalement, explorer les résultats fournis.

Les instructions du TP suivant sont ici