Accéder au contenu principal

Tutoriel PyCaret : guide du débutant pour automatiser les workflows de ML avec PyCaret

PyCaret est un outil de machine learning et de gestion de modèles de bout en bout qui accélère considérablement le cycle d’expérimentation et booste votre productivité.
· 12 min lire

Explorez l'IA

Qu’est-ce que PyCaret

Remarque : ce tutoriel a été créé en 2021 et PyCaret n’est plus activement maintenu ; certaines étapes peuvent ne pas fonctionner avec les versions actuelles de DataLab ou d’autres outils.

PyCaret est une bibliothèque de machine learning open source et low-code en Python qui automatise les workflows de machine learning. C’est un outil de bout en bout pour le machine learning et la gestion de modèles qui accélère de façon exponentielle le cycle d’expérimentation et vous rend plus productif.

Comparé aux autres bibliothèques open source de machine learning, PyCaret est une alternative low-code qui remplace des centaines de lignes de code par seulement quelques lignes. Les expérimentations s’en trouvent bien plus rapides et efficaces. PyCaret est essentiellement un wrapper Python autour de plusieurs bibliothèques et frameworks de machine learning tels que scikit-learn, XGBoost, LightGBM, CatBoost, spaCy, Optuna, Hyperopt, Ray, et d’autres.

La conception et la simplicité de PyCaret s’inspirent du rôle émergent des citizen data scientists, un terme introduit par Gartner. Les citizen data scientists sont des utilisateurs avancés capables de réaliser des tâches d’analyse simples à modérément complexes qui nécessitaient auparavant davantage d’expertise technique.

PyCaret est simple et facile à utiliser. Toutes les opérations effectuées dans PyCaret sont stockées séquentiellement dans un pipeline entièrement orchestré pour la mise en production. Qu’il s’agisse d’imputer les valeurs manquantes, de transformer des variables catégorielles, de faire de l’ingénierie de caractéristiques ou même du réglage d’hyperparamètres, PyCaret automatise le tout. Pour en savoir plus sur PyCaret, regardez cette vidéo d’une minute.

Modules dans PyCaret

L’API de PyCaret est organisée en modules. Chaque module prend en charge un type d’apprentissage supervisé (classification et régression) ou non supervisé (clustering, détection d’anomalies, nlp, extraction de règles d’association). Un nouveau module de prévision de séries temporelles a été publié récemment en bêta sous forme d’un package pip séparé.

Source de l’image : [Ali, Moez].

Installer PyCaret

L’installation de PyCaret via pip est simple et ne prend que quelques minutes. L’installation par défaut de PyCaret ne déploie que les dépendances strictement nécessaires listées dans le fichier requirements.txt du repo.

Remarque : ce tutoriel a été créé en 2021 et PyCaret n’est plus activement maintenu ; certaines étapes peuvent ne pas fonctionner avec les versions actuelles de DataLab ou d’autres outils.

pip install pycaret

Pour installer la version complète :

pip install pycaret[full]

Fonctionnalités

La force de PyCaret, c’est sa simplicité. Par rapport aux autres solutions AutoML, PyCaret est extrêmement flexible, propose une API unifiée et ne nécessite quasiment pas d’apprentissage.

PyCaret regorge de fonctionnalités. Vous pouvez passer du traitement de vos données à l’entraînement des modèles, puis au déploiement dans le cloud en quelques lignes de code. Il intègre de nombreuses transformations de prétraitement appliquées automatiquement lors de l’initialisation de l’expérience. Le zoo de modèles de PyCaret comprend plus de 70 modèles non entraînés pour des tâches supervisées et non supervisées.

Vous pouvez également utiliser PyCaret sur GPU et accélérer votre workflow par 10. Pour entraîner des modèles sur GPU, il suffit de passer use_gpu = True dans la fonction setup. Aucun autre changement de code.

PyCaret est une solution « boîte de verre ». Elle propose de nombreuses fonctionnalités pour interagir avec le modèle et analyser les performances et les résultats. Tous les graphiques standards comme la matrice de confusion, l’AUC, les résidus et l’importance des variables sont disponibles pour tous les modèles. Il s’intègre aussi à la bibliothèque SHAP, utilisée pour expliquer la sortie de modèles d’arbres complexes.

(Exemple de beeswarm plot)

PyCaret s’intègre également à MLflow pour ses fonctionnalités MLOps. Il journalise automatiquement métriques, paramètres et artefacts lorsque vous passez log_experiment = True dans la fonction setup.

(Image de l’auteur)

Prétraitement dans PyCaret

Toutes les transformations de prétraitement sont appliquées dans la fonction setup. PyCaret propose plus de 25 transformations de prétraitement définies dans setup. Cliquez ici pour en savoir plus sur les capacités de prétraitement de PyCaret.

(Image de l’auteur)

Modules dans PyCaret

ModuleTâche
pycaret.classificationSupervisé : classification binaire ou multi-classes
pycaret.regressionSupervisé : régression
pycaret.clusteringNon supervisé : clustering
pycaret.anomalyNon supervisé : détection d’anomalies
pycaret.nlpNon supervisé : traitement du langage naturel (modélisation de thèmes)
pycaret.arulesNon supervisé : extraction de règles d’association
pycaret.datasetsJeux de données

Exemple : un cas d’usage ML de bout en bout

Voici un workflow de machine learning typique. La bonne formulation du problème ML est la première étape de tout projet et peut prendre de quelques jours à plusieurs semaines.

La collecte de données et l’ETL (Extract-Transform-Load) varient aussi en complexité selon la maturité technologique et la taille de l’organisation. Il est courant de voir une équipe d’ingénieurs data intervenir à cette étape.

La phase d’analyse exploratoire des données (EDA) consiste à explorer les données brutes pour évaluer leur qualité (valeurs manquantes, outliers, etc.), les corrélations entre variables et tester des hypothèses métiers.

Pour la préparation des données, l’entraînement et la sélection de modèles, PyCaret se charge de l’essentiel en coulisses. La préparation inclut l’imputation des valeurs manquantes, la mise à l’échelle (min-max, z-score, etc.), l’encodage des variables catégorielles (one-hot, ordinal, etc.), l’ingénierie de caractéristiques (polynômes, interactions, ratios, etc.) et la sélection de variables.

Après la préparation, l’étape d’entraînement et de sélection consiste à ajuster plusieurs algorithmes et à évaluer leurs performances via une stratégie de test (souvent la validation croisée).

Enfin, le modèle retenu (le meilleur) est déployé comme point de terminaison d’API pour l’inférence. Une fois en production, la surveillance de l’API et le suivi des performances du modèle s’inscrivent dans la durée.

(Image de l’auteur)

Énoncé du problème

Prédire le prix d’un diamant à partir d’attributs comme la coupe, la couleur, la forme, etc.

Collecte des données

# charger le jeu de données depuis pycaret
from pycaret.datasets import get_data
data = get_data('diamond')

Analyse exploratoire des données (EDA)

Faisons quelques visualisations rapides pour évaluer la relation entre les variables explicatives (poids, coupe, couleur, pureté, etc.) et la variable cible, à savoir le prix :

# nuage de points carat_weight et Price
import plotly.express as px
fig = px.scatter(x=data['Carat Weight'], y=data['Price'], facet_col = data['Cut'], opacity = 0.25, trendline='ols', trendline_color_override = 'red')
fig.show()

Vérifions l’histogramme de la variable cible Price.

# tracer l’histogramme fig = px.histogram(data, x=["Price"]) fig.show()

On observe que la distribution de Price est asymétrique à droite. Vérifions rapidement si une transformation logarithmique peut modifier la forme de la distribution de la cible.

# tracer l’histogramme data['logged_Price'] = np.log(data['Price']) fig = px.histogram(data, x=["logged_Price"]) fig.show()

Nettoyage et préparation des données

Toutes les expériences PyCaret doivent être initialisées avec la fonction setup. Elle prend en charge toutes les tâches de préparation nécessaires avant l’entraînement. Au-delà des traitements par défaut, PyCaret propose une large gamme de fonctionnalités de prétraitement. Cliquez ici pour en savoir plus sur l’ensemble des fonctionnalités de prétraitement dans PyCaret.

# initialiser setup
from pycaret.regression import *
s = setup(data, target = 'Price', transform_target = True, log_experiment = True, experiment_name = 'diamond')

Lors de l’initialisation de setup, PyCaret profile le jeu de données et infère les types pour toutes les variables d’entrée. Si tout est correct, vous pouvez valider avec Entrée. Un paramètre permet aussi d’écraser les types dans PyCaret. Si vous utilisez PyCaret dans un script Python, vous pouvez supprimer cette confirmation en passant silent = True à setup.

(Sortie de setup — tronquée pour l’affichage)

Entraînement et sélection du modèle ML

Après setup, les données transformées sont prêtes pour l’entraînement. Vous pouvez lancer l’entraînement avec la fonction compare_models. Elle entraîne tous les algorithmes du zoo de modèles et évalue plusieurs métriques via une validation croisée k-fold.

# comparer tous les modèles
best = compare_models()
(Sortie de compare_models)

La sortie de compare_models présente les métriques moyennes en validation croisée pour tous les modèles. Par défaut, le tri s’effectue par « R2 » (du plus élevé au plus faible), mais cela peut être modifié avec le paramètre sort de compare_models.

Le meilleur modèle (ici, CatBoost Regressor) est renvoyé à la fin de compare_models. Par défaut, seul le meilleur est renvoyé, mais vous pouvez changer ce comportement avec le paramètre n_select. Par exemple, n_select = 3 renverra les 3 meilleurs modèles sous forme de liste.

# vérifier les paramètres finaux du meilleur modèle
best.get_params()

On peut aussi consulter les diagnostics et plusieurs graphiques d’analyse avec la fonction plot_model.

# vérifier les résidus du modèle entraîné
plot_model(best, plot = 'residuals_interactive')
plot_model(best, plot = ‘feature’)

Il existe aussi la fonction evaluate_model, un moyen pratique de parcourir tous les graphiques d’analyse disponibles dans Jupyter Notebook.

evaluate_model(best)

Déploiement et supervision du modèle ML

Nous pouvons maintenant utiliser le modèle final pour générer des prédictions sur des données non vues avec la fonction predict_model :

# copier les données et supprimer la variable cible
data_unseen = data.copy()
data_unseen.drop(‘Price’, axis = 1, inplace = True)
predictions = predict_model(best, data = data_unseen)

Pour un usage ultérieur, vous pouvez enregistrer tout le pipeline avec la fonction save_model.

save_model(best, ‘my_best_pipeline’)

Journalisation des expériences

Rappelez-vous, nous avons passé log_experiment = True dans setup avec experiment_name = 'diamond'. Voyons ce que PyCaret a fait en coulisses. Pour observer cela, lançons le serveur MLflow :

# dans le notebook
!mlflow ui

# depuis la ligne de commande
mlflow ui

Ouvrez ensuite votre navigateur et saisissez « localhost:5000 ». Une interface comme celle-ci s’affiche :

Chaque entrée du tableau ci-dessus correspond à un run d’entraînement aboutissant à un pipeline entraîné et à un ensemble de métadonnées telles que la date/heure d’exécution, les métriques de performance, les hyperparamètres, les tags, etc. Cliquons sur l’un des modèles :

Prévision de séries temporelles avec PyCaret

Le nouveau module de séries temporelles de PyCaret est désormais disponible en bêta. Fidèle à la simplicité de PyCaret, il reste cohérent avec l’API existante et très complet. Tests statistiques, entraînement et sélection de modèles (30+ algorithmes), analyse de modèles, réglage automatique des hyperparamètres, journalisation des expériences, déploiement dans le cloud, et plus encore. Tout cela en quelques lignes de code (comme les autres modules de PyCaret). Pour utiliser ce module en bêta, vous devez l’installer dans un environnement conda séparé afin d’éviter les conflits de dépendances.

pip install pycaret-ts-alpha

Les séries temporelles figurent parmi les types de données les plus courants, et savoir les manipuler est une compétence clé en data science pour prévoir et analyser les tendances. Si vous souhaitez approfondir l’analyse et la prévision de séries temporelles en Python, DataCamp propose une excellente sélection de cours. Vous pouvez commencer par le parcours Time Series with Python ou choisir l’un de ces cours :

Intégrations PyCaret

DomaineIntégrations
Modèlesscikit-learn, XGBoost, LightGBM, CatBoost
Entraînement GPURAPIDS.AI
Calcul distribuéRAY
Réglage d’hyperparamètrestune-sklearn, optuna
Visualisation et analyseplotly, yellowbrick, seaborn, matplotlib
NLPgensim, spacy, nltk
MLOpsMLflow

FAQ PyCaret

  1. PyCaret est-il disponible uniquement en Python ? Oui, PyCaret est pour l’instant uniquement disponible en Python.

  2. Quelle est la différence entre PyCaret et d’autres bibliothèques open source comme scikit-learn, XGBoost, LightGBM ? Par rapport aux autres bibliothèques open source de machine learning, PyCaret est une alternative low-code qui remplace des centaines de lignes de code par seulement quelques lignes. PyCaret est essentiellement un wrapper Python autour de bibliothèques et frameworks comme scikit-learn, XGBoost, LightGBM, CatBoost, spaCy, Optuna, Hyperopt, Ray, et d’autres.

  3. Quels cas d’usage sont pris en charge par PyCaret ? Depuis la version 2.3.4, PyCaret prend en charge la classification binaire/multi-classes, la régression, le clustering, la détection d’anomalies, le traitement du langage naturel (modélisation de thèmes) et l’extraction de règles d’association. PyCaret a également publié récemment son nouveau module séries temporelles en bêta sous forme d’un installeur pip séparé.

  4. Peut-on utiliser PyCaret sur GPU ? Vous pouvez entraîner des modèles sur GPU avec PyCaret et accélérer votre workflow par 10. Pour cela, passez simplement use_gpu = True dans setup. L’API ne change pas, toutefois dans certains cas des bibliothèques supplémentaires doivent être installées car elles ne sont pas incluses dans la version par défaut ou complète.

  5. Peut-on régler les hyperparamètres des modèles dans PyCaret ? Oui, vous pouvez régler automatiquement les hyperparamètres de n’importe quel modèle dans PyCaret. Il s’intègre à sklearn, optuna, tune-sklearn et ray pour différents optimiseurs, comme la recherche aléatoire sur grille ou bayésienne.

  6. PyCaret est-il gratuit ? PyCaret est entièrement gratuit, open source et distribué sous licence MIT.

Ressources PyCaret----
⭐ TutorielsNouveau sur PyCaret ? Parcourez les notebooks officiels !
📋 NotebooksExemples de notebooks créés par la communauté.
📙 BlogTutoriels et articles rédigés par des contributeurs.
📚 DocumentationLa documentation détaillée de l’API PyCaret
📺 Tutoriels vidéoNos tutoriels vidéo issus de divers événements.
📢 DiscussionsDes questions ? Échangez avec la communauté et les contributeurs.
🛠️ <atarget="_blank" href="https://github.com/pycaret/pycaret/blob/master/CHANGELOG.md">ChangelogÉvolutions et historique des versions.
🌳 Feuille de routeLe plan de développement logiciel et communautaire de PyCaret.

Sujets