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é.
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.
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.
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.
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')Propulsé par
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()Propulsé par
Vérifions l’histogramme de la variable cible Price.
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.
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')Propulsé par
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()Propulsé par
(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()Propulsé par
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')Propulsé par
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)Propulsé par
Pour un usage ultérieur, vous pouvez enregistrer tout le pipeline avec la fonction save_model.
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
Propulsé par
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.
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 :
PyCaret est-il disponible uniquement en Python ? Oui, PyCaret est pour l’instant uniquement disponible en Python.
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.
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é.
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.
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.
PyCaret est-il gratuit ? PyCaret est entièrement gratuit, open source et distribué sous licence MIT.
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é.
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.
Pour installer la version complète :
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.
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.
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.
Modules dans PyCaret
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.
É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
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 :
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.
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.
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.
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.
On peut aussi consulter les diagnostics et plusieurs graphiques d’analyse avec la fonction plot_model.
Il existe aussi la fonction evaluate_model, un moyen pratique de parcourir tous les graphiques d’analyse disponibles dans Jupyter Notebook.
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:Pour un usage ultérieur, vous pouvez enregistrer tout le pipeline avec la fonction save_model.
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 :
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.
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
FAQ PyCaret
PyCaret est-il disponible uniquement en Python ? Oui, PyCaret est pour l’instant uniquement disponible en Python.
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.
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é.
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.
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.
PyCaret est-il gratuit ? PyCaret est entièrement gratuit, open source et distribué sous licence MIT.