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)
<- initial_split(iris, prop = 0.8)
iris_split <- training(iris_split)
iris_train <- testing(iris_split)
iris_test
# Définir les spécifications d'un modèle de régression logistique pour la classification multi-classes
<- multinom_reg() %>%
model_spec set_engine("nnet") %>%
set_mode("classification")
# Créer un flux de travail et ajouter le modèle et la formule
<- workflow() %>%
iris_workflow add_model(model_spec) %>%
add_formula(Species ~ .)
# Ajuster le modèle
<- fit(iris_workflow, data = iris_train)
iris_fit
# Faire des prédictions sur l'ensemble de test
<- predict(iris_fit, new_data = iris_test) %>%
iris_pred bind_cols(iris_test)
# Évaluer les performances des modèles
<- iris_pred %>% metrics(truth = Species, estimate = .pred_class)
metrics 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
= load_iris()
iris = pd.DataFrame(iris.data, columns=iris.feature_names)
df 'Species'] = iris.target
df[
# Diviser l'ensemble de données en ensembles de formation et de test
= df.drop('Species', axis=1)
X = df['Species']
y = train_test_split(X, y, test_size=0.2, random_state=123)
X_train, X_test, y_train, y_test
# Initialiser et ajuster un modèle de régression logistique
= LogisticRegression(max_iter=200)
model
model.fit(X_train, y_train)
# Faire des prédictions sur l'ensemble de test
= model.predict(X_test)
pred
# Évaluer les performances des modèles
= accuracy_score(y_test, pred)
accuracy 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
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.
- 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.
É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
- Python pour les utilisateurs de R : transition vers Python pour la science des données
- Manipulation de données en Python vs. R : dplyr vs. pandas
- Syntaxe R vs Syntaxe Python : un guide comparatif
Bon codage et bonne exploration des processus d’apprentissage automatique en R et en Python!
Explorer d’autres articles
Voici d’autres articles de la même catégorie pour vous aider à approfondir le sujet.
Réutilisation
Citation
@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}
}