Flux de travail pour l’apprentissage automatique : tidymodels vs. scikit-learn

Comparer la formation, l’évaluation et la prédiction de modèles ML en R et Python

Comparez les flux de travail d’apprentissage automatique en R et en Python en examinant tidymodels en R et scikit-learn en Python. Ce didacticiel fournit des exemples côte à côte de formation, d’évaluation et de prédiction de modèles à l’aide de l’ensemble de données de l’iris, en mettant en évidence les principales différences et les points forts de chaque écosystème.

Programmation
Auteur·rice
Affiliation
Date de publication

13 février 2024

Modifié

9 mai 2025

Mots clés

tidymodels vs scikit-learn, Apprentissage automatique en R et Python, caret vs scikit-learn, flux de travail ML en science des données, Apprentissage automatique en Python ou en R

Introduction

En science des données, la construction et l’évaluation de modèles prédictifs est une tâche essentielle. R et Python offrent tous deux des écosystèmes robustes pour l’apprentissage automatique - R avec tidymodels (ou caret) et Python avec scikit-learn. Ce tutoriel fournit des exemples côte à côte en utilisant l’ensemble de données bien connu de l’iris pour comparer la façon dont chaque langage aborde l’apprentissage, l’évaluation et la prédiction des modèles. À la fin de la formation, vous comprendrez les similitudes et les différences entre ces flux de travail, ce qui vous aidera à choisir le meilleur ensemble d’outils pour vos projets.



Exemple comparatif : Formation d’un modèle de classification sur l’ensemble de données Iris

Nous diviserons l’ensemble de données de l’iris en ensembles de formation et de test, nous formerons un modèle de régression logistique dans chaque langue, puis nous évaluerons leurs performances.

#| label: r-tidymodels
# Chargement des bibliothèques nécessaires
library(tidymodels)

# Charger l'ensemble de données de l'iris
data(iris)

# Diviser les données en ensembles de formation et de test
set.seed(123)
iris_split <- initial_split(iris, prop = 0.8)
iris_train <- training(iris_split)
iris_test <- testing(iris_split)

# Définir les spécifications d'un modèle de régression logistique pour la classification multi-classes
model_spec <- multinom_reg() %>% 
  set_engine("nnet") %>% 
  set_mode("classification")

# Créer un flux de travail et ajouter le modèle et la formule
iris_workflow <- workflow() %>% 
  add_model(model_spec) %>% 
  add_formula(Species ~ .)

# Ajuster le modèle
iris_fit <- fit(iris_workflow, data = iris_train)

# Faire des prédictions sur l'ensemble de test
iris_pred <- predict(iris_fit, new_data = iris_test) %>% 
  bind_cols(iris_test)

# Évaluer les performances des modèles
metrics <- iris_pred %>% metrics(truth = Species, estimate = .pred_class)
print(metrics)

Résultats:

  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy multiclass     0.967
2 kap      multiclass     0.946
#| label: python-scikit-learn
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report

# Charger l'ensemble de données de l'iris
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['Species'] = iris.target

# Diviser l'ensemble de données en ensembles de formation et de test
X = df.drop('Species', axis=1)
y = df['Species']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)

# Initialiser et ajuster un modèle de régression logistique
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# Faire des prédictions sur l'ensemble de test
pred = model.predict(X_test)

# Évaluer les performances des modèles
accuracy = accuracy_score(y_test, pred)
print("Accuracy:", accuracy)
print("Classification Report:")
print(classification_report(y_test, pred))

Résultats:

              precision    recall  f1-score   support

           0       1.00      1.00      1.00        13
           1       1.00      1.00      1.00         6
           2       1.00      1.00      1.00        11

    accuracy                           1.00        30
   macro avg       1.00      1.00      1.00        30
weighted avg       1.00      1.00      1.00        30
Note

La colonne support indique le nombre d’instances vraies (ou d’observations réelles) de chaque classe dans l’ensemble de test. Il vous indique combien d’échantillons appartiennent à chaque classe, ce qui est utile pour comprendre la distribution des classes dans votre ensemble de données.

Discussion

Comparaison des flux de travail

  • Fractionnement des données:
    Les deux exemples divisent l’ensemble de données de l’iris en ensembles d’apprentissage et de test en utilisant des approches similaires de semences aléatoires.

  • Entraînement du modèle:

    • R (tidymodels): Utilise un flux de travail qui intègre la spécification du modèle et la modélisation basée sur des formules.
    • Python (scikit-learn): Implémente une approche plus impérative, en ajustant directement un modèle de régression logistique.
  • Évaluation:
    Les deux méthodes évaluent les performances du modèle, bien que les métriques et les formats de sortie diffèrent. L’approche tidymodels s’appuie sur une syntaxe claire et conviviale, tandis que scikit-learn fournit des fonctions intégrées pour la précision et les rapports de classification détaillés.

Points forts de chaque approche

  • tidymodels (R):
    Offre un flux de travail hautement modulaire et cohérent qui s’intègre de manière transparente avec d’autres outils, ce qui permet de l’étendre et de le personnaliser facilement.

  • scikit-learn (Python):
    Fournit une interface simple et largement adoptée avec un support robuste pour une variété d’algorithmes d’apprentissage automatique et d’outils de prétraitement.

Conclusion

Cette comparaison côte à côte démontre que tidymodels en R et scikit-learn en Python offrent tous deux des flux de travail puissants pour la construction et l’évaluation de modèles d’apprentissage automatique. En comprenant les nuances de chaque approche, vous pouvez sélectionner l’environnement qui correspond le mieux à vos besoins en matière de science des données, ou même les combiner pour tirer parti des forces des deux.

Plus d’informations

Bon codage et bonne exploration des processus d’apprentissage automatique en R et en Python!

Explorer d’autres articles

Note

Voici d’autres articles de la même catégorie pour vous aider à approfondir le sujet.

placeholder

placeholder
Aucun article correspondant
Retour au sommet

Réutilisation

Citation

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Flux de travail pour l’apprentissage automatique : tidymodels
    vs. scikit-learn},
  date = {2024-02-13},
  url = {https://www.datanovia.com/fr/learn/programming/transition/machine-learning-workflows.html},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
Kassambara, Alboukadel. 2024. “Flux de travail pour l’apprentissage automatique : tidymodels vs. scikit-learn.” February 13, 2024. https://www.datanovia.com/fr/learn/programming/transition/machine-learning-workflows.html.