scikit-learn est l’une des bibliothèques de référence pour l’apprentissage automatique en Python (et même en dehors du langage). Sa popularité est notamment due au grand nombre d’algorithmes implémentés, mais aussi à l’interface extrêmement simple et cohérente, prévue pour simplifier la vie aux débutants (par exemple, tous les choix de paramètres par défaut devraient donner d’assez bons résultats). Contrairement à Torch, TensorFlow, Caffe ou encore CNTK, scikit-learn ne se focalise pas sur les réseaux neuronaux profonds : tout au plus dispose-t-il d’un perceptron multicouche (MLP), les autres techniques étant loin d’être stabilisées.
Tout d’abord, au niveau des versions de Python gérées, scikit-learn 0.20 sera la dernière version à fonctionner avec Python 2.7 et 3.4 : Python 3.5 (sortie en 2015) sera le minimum requis. Cette décision reflète le choix de NumPy d’arrêter toute compatibilité avec Python 2 à la fin de l’année 2018 pour les nouvelles fonctionnalités (des correctifs seront toujours disponibles jusqu’en 2020 en cas de défaut avec Python 2, mais aucune nouvelle fonctionnalité) — devoir tester le code sur des versions de Python trop différentes prend trop de ressources au niveau du projet NumPy. Python 3.4 ne sera plus de la partie, car les versions plus récentes offrent beaucoup de facilités aux développeurs de scikit-learn (notamment pour annoter les fonctions avec des types).
Pour faciliter l’utilisation de la bibliothèque par les plus débutants, la documentation fournit désormais un glossaire assez complet. Il mentionne notamment toute une série de paramètres disponibles pour les algorithmes d’apprentissage (comme n_outputs).
Une grande nouveauté de scikit-learn 0.20 concerne la gestion des données “sales” : au lieu de devoir utiliser une autre bibliothèque comme Pandas pour les gérer, scikit-learn fournit toute une série de fonctions pour les traiter. Par exemple, les données manquantes peuvent être indiquées comme des NaN : les fonctions de transformation par colonne les ignoreront par défaut ; le nouveau module impute permet alors de remplacer les valeurs manquantes (la classe SimpleImputer était déjà disponible dans le module preprocessing).
ColumnTransformer est probablement la classe à propos de laquelle l’effervescence est la plus grande. Elle permet d’appliquer des transformations complètement distinctes aux différentes colonnes d’un tableau Pandas. Aussi, les classes OneHotEncoder et OrdinalEncoder, servant à transformer les variables qualitatives (comme une couleur), peuvent prendre en entrée des chaînes de caractères ou des valeurs qualitatives de Pandas. Finalement, le module compose fait son apparition pour faciliter la composition de transformations.
Au niveau communautaire, scikit-learn dispose désormais d’une fondation (juridiquement hébergée par Inria). Elle servira notamment à récupérer les donations des particuliers et les parrainages des entreprises, mais aussi à garantir que le projet puisse embaucher des contributeurs pour travailler exclusivement sur scikit-learn. Ils pourront se concentrer sur des fonctionnalités plus ambitieuses, en éliminant les contraintes d’un autre emploi, notamment au niveau du parallélisme — sans devoir passer par les contraintes administratives propres au financement de la recherche en France. Le choix d’Inria s’est fait parce que cet organisme de recherche est à l’origine de scikit-learn, mais aussi parce que la plupart des développeurs principaux sont localisés en Europe (et le transfert d’argent par une association sans but lucratif par-delà l’Atlantique est parfois compliqué).
Source : liste des changements, A foundation for scikit-learn at Inria.
Partager