Une introduction douce à Scikit-Learn
Si vous êtes un programmeur Python ou si vous recherchez une bibliothèque robuste que vous pouvez utiliser pour intégrer l'apprentissage automatique dans un système de production, une bibliothèque que vous voudrez sérieusement envisager est scikit-learn.
Dans cet article, vous obtiendrez un aperçu de la bibliothèque scikit-learn et des références utiles sur les endroits où vous pourrez en savoir plus.
Démarrez votre projet avec mon nouveau livre Machine Learning Mastery With Python, comprenant des tutoriels étape par étape et les fichiers code source Python pour tous les exemples.
Commençons.
D'où vient-il ?
Scikit-learn a été initialement développé par David Cournapeau dans le cadre d'un projet Google Summer of Code en 2007.
Plus tard, Matthieu Brucher a rejoint le projet et a commencé à l'utiliser dans le cadre de ses travaux de thèse. En 2010, l'INRIA s'est impliqué et la première version publique (v0.1 bêta) a été publiée fin janvier 2010.
Le projet compte désormais plus de 30 contributeurs actifs et bénéficie du parrainage rémunéré de l'INRIA, de Google, de Tinyclues et de la Python Software Foundation.
Qu’est-ce que scikit-learn ?
Scikit-learn fournit une gamme d'algorithmes d'apprentissage supervisé et non supervisé via une interface cohérente en Python.
Il est sous licence permissive simplifiée BSD et est distribué sous de nombreuses distributions Linux, encourageant son utilisation académique et commerciale.
La bibliothèque est construite sur SciPy (Scientific Python) qui doit être installé avant de pouvoir utiliser scikit-learn. Cette pile qui comprend :
- NumPy : package de tableau de base à n dimensions
- SciPy : bibliothèque fondamentale pour le calcul scientifique
- Matplotlib : traçage 2D/3D complet
- IPython : console interactive améliorée
- Sympy : Mathématiques symboliques
- Pandas : structures et analyses de données
Extensions ou modules pour les soins SciPy appelés conventionnellement SciKits. En tant que tel, le module fournit des algorithmes d’apprentissage et s’appelle scikit-learn.
La vision de la bibliothèque est un niveau de robustesse et de support requis pour une utilisation dans les systèmes de production. Cela signifie une concentration approfondie sur des préoccupations telles que la facilité d'utilisation, la qualité du code, la collaboration, la documentation et les performances.
Bien que l'interface soit Python, les bibliothèques C sont un levier de performances telles que numpy pour les opérations sur les tableaux et les matrices, LAPACK, LibSVM et l'utilisation prudente de cython.
Quelles sont les fonctionnalités ?
La bibliothèque se concentre sur la modélisation des données. Il ne se concentre pas sur le chargement, la manipulation et la synthèse des données. Pour ces fonctionnalités, reportez-vous à NumPy et Pandas.
Certains groupes de modèles populaires fournis par scikit-learn incluent :
- Clustering : pour regrouper des données non étiquetées telles que KMeans.
- Validation croisée : pour estimer les performances de modèles supervisés sur des données invisibles.
- Ensembles de données : pour tester les ensembles de données et générer des ensembles de données avec des propriétés spécifiques pour étudier le comportement du modèle.
- Réduction de la dimensionnalité : pour réduire le nombre d'attributs dans les données à des fins de synthèse, de visualisation et de sélection de fonctionnalités telles que l'analyse en composantes principales.
- Méthodes Ensemble : pour combiner les prédictions de plusieurs modèles supervisés.
- Extraction de fonctionnalités : pour définir des attributs dans les données d'image et de texte.
- Sélection de fonctionnalités : pour identifier des attributs significatifs à partir desquels créer des modèles supervisés.
- Réglage des paramètres : pour tirer le meilleur parti des modèles supervisés.
- Apprentissage multiple : pour résumer et représenter des données multidimensionnelles complexes.
- Modèles supervisés : une vaste gamme ne se limitant pas aux modèles linéaires généralisés, à l'analyse discriminante, aux bayes naïves, aux méthodes paresseuses, aux réseaux de neurones, aux machines vectorielles de support et aux arbres de décision.
Exemple : arbres de classification et de régression
Je veux vous donner un exemple pour vous montrer à quel point il est facile d'utiliser la bibliothèque.
Dans cet exemple, nous utilisons l'algorithme d'arbre de décision des arbres de classification et de régression (CART) pour modéliser l'ensemble de données de fleurs d'iris.
Cet ensemble de données est fourni à titre d'exemple avec la bibliothèque et est chargé. Le classificateur est ajusté aux données, puis des prédictions sont faites sur les données d'entraînement.
Enfin, la précision de la classification et une matrice de confusion sont imprimées.
# Sample Decision Tree Classifier
from sklearn import datasets
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier
# load the iris datasets
dataset = datasets.load_iris()
# fit a CART model to the data
model = DecisionTreeClassifier()
model.fit(dataset.data, dataset.target)
print(model)
# make predictions
expected = dataset.target
predicted = model.predict(dataset.data)
# summarize the fit of the model
print(metrics.classification_report(expected, predicted))
print(metrics.confusion_matrix(expected, predicted))
L'exécution de cet exemple produit le résultat suivant, vous montrant les détails du modèle formé, les compétences du modèle selon certaines métriques courantes et une matrice de confusion.
DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
max_features=None, max_leaf_nodes=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
presort=False, random_state=None, splitter='best')
precision recall f1-score support
0 1.00 1.00 1.00 50
1 1.00 1.00 1.00 50
2 1.00 1.00 1.00 50
avg / total 1.00 1.00 1.00 150
[[50 0 0]
[ 0 50 0]
[ 0 0 50]]
Qui l'utilise ?
La page de témoignages scikit-learn répertorie Inria, Mendeley, wise.io , Evernote, Telecom ParisTech et AWeber comme utilisateurs de la bibliothèque.
S’il ne s’agit que d’une petite indication des entreprises qui ont présenté leur utilisation, il y a très probablement des dizaines, voire des centaines de grandes organisations qui utilisent la bibliothèque.
Il offre une bonne couverture de tests et des versions gérées et convient aussi bien aux projets de prototypes qu'aux projets de production.
Ressources
Si vous souhaitez en savoir plus, consultez la page d'accueil de Scikit-Learn qui comprend de la documentation et des ressources associées.
Vous pouvez obtenir le code depuis le référentiel github et les versions sont historiquement disponibles sur le projet Sourceforge.
Documentation
Je vous recommande de commencer par le didacticiel de démarrage rapide et de parcourir le guide de l'utilisateur et la galerie d'exemples pour les algorithmes qui vous intéressent.
En fin de compte, scikit-learn est une bibliothèque et la référence API sera la meilleure documentation pour faire avancer les choses.
- Tutoriel de démarrage rapide http://scikit-learn.org/stable/tutorial/basic/tutorial.html
- Guide de l'utilisateur http://scikit-learn.org/stable/user_guide.html
- Référence API http://scikit-learn.org/stable/modules/classes.html
- Galerie d'exemples http://scikit-learn.org/stable/auto_examples/index.html
Papiers
Si vous souhaitez plus d’informations sur le démarrage du projet et sa vision, vous souhaiterez peut-être consulter certains articles.
- Scikit-learn : apprentissage automatique en Python (2011)
- Conception d'API pour logiciels d'apprentissage automatique : expériences du projet scikit-learn (2013)
Livres
Si vous cherchez un bon livre, je vous recommande « Construire des systèmes d'apprentissage automatique avec Python ». C’est bien écrit et les exemples sont intéressants.
- Apprentissage scikit-learn : apprentissage automatique en Python (2013)
- Construire des systèmes d'apprentissage automatique avec Python (2013)
- Statistiques, exploration de données et apprentissage automatique en astronomie : un guide Python pratique pour l'analyse des données d'enquête (2014).