Maison  >  Article  >  développement back-end  >  Analyser les bibliothèques d'apprentissage automatique couramment utilisées en Python

Analyser les bibliothèques d'apprentissage automatique couramment utilisées en Python

高洛峰
高洛峰original
2017-03-19 17:01:261037parcourir

Le

Python est largement utilisé en calcul scientifique : vision par ordinateur, intelligence artificielle, mathématiques, astronomie, etc. Il n’est pas surprenant que cela s’applique également à l’apprentissage automatique.

Cet article répertorie et décrit les outils et bibliothèques d'apprentissage automatique les plus utiles en Python. Dans cette liste, nous n'exigeons pas que ces bibliothèques soient écrites en Python, tant qu'elles disposent d'une interface Python.

Notre intention n'est pas de lister toutes les bibliothèques d'apprentissage automatique en Python ( Lors de la recherche de "apprentissage automatique" Package Python index (PyPI) renvoie 139 résultats), mais répertoriez plutôt ceux que nous savons utiles et bien entretenus.

De plus, bien que certains modules puissent être utilisés pour une variété de tâches d'apprentissage automatique, nous répertorions uniquement les bibliothèques dont l'objectif principal est l'apprentissage automatique. Par exemple, bien que Scipy1 inclut certains algorithmes de clustering, son objectif principal n’est pas l’apprentissage automatique mais un ensemble complet d’outils de calcul scientifique. Par conséquent, nous excluons Scipy (même si nous l'utilisons aussi !).

Une autre chose à mentionner est que nous évaluerons également ces bibliothèques en fonction de leur intégration avec d'autres bibliothèques de calcul scientifique, puisque l'apprentissage automatique (supervisé ou non supervisé) fait également partie du système de traitement des données. Si la bibliothèque que vous utilisez ne correspond pas au reste du système informatique, vous passerez beaucoup de temps à créer une couche intermédiaire entre les différentes bibliothèques. Il est important d'avoir une excellente bibliothèque dans votre ensemble d'outils, mais il est tout aussi important que la bibliothèque s'intègre bien aux autres bibliothèques.

Si vous maîtrisez d'autres langages mais souhaitez également utiliser des packages Python, nous décrivons également brièvement comment intégrer Python pour utiliser les bibliothèques répertoriées dans cet article.

Scikit-Learn

Scikit Learn7 est l'outil d'apprentissage automatique que nous utilisons chez CB Insights. Nous l'utilisons pour la classification, la sélection de fonctionnalités, l'extraction de fonctionnalités et l'agrégation.

Ce que nous aimons le plus, c'est qu'il dispose d'une API cohérente et facile à utiliser et qu'il fournit **de nombreuses** méthodes d'évaluation, de diagnostic et de validation croisée disponibles immédiatement. (n'est-ce pas cela vous semble familier ? Python fournit également une méthode « prêt pour la batterie »). La cerise sur le gâteau est qu'il utilise des structures de données Scipy sous le capot, ce qui correspond bien au reste de Python qui utilise Scipy, Numpy, Pandas et Matplotlib pour le calcul scientifique.

Donc, si vous souhaitez visualiser les performances de votre classificateur (par exemple, à l'aide d'un tracé de rappel de précision ou d'une courbe des caractéristiques de fonctionnement du récepteur (ROC)), Matplotlib peut vous aider à réaliser des visualisations rapides.

Compte tenu du temps passé à nettoyer et à structurer les données, l'utilisation de cette bibliothèque peut être très pratique car elle peut être étroitement intégrée à d'autres packages de calcul scientifique.

De plus, il contient également des capacités limitées d'extraction de fonctionnalités de traitement du langage naturel, ainsi qu'un sac de mots, tfidf (Term Frequency Inverse DocumentAlgorithme de fréquence), prétraitement (mots désactivés/stop- mots, prétraitement personnalisé, analyseur).

De plus, si vous souhaitez effectuer rapidement différents tests de référence sur de petits ensembles de données (ensemble de données de jouets), son propre module d'ensemble de données fournit des ensembles de données communs et utiles. Vous pouvez également créer votre propre petit ensemble de données basé sur ces ensembles de données, afin de pouvoir tester si le modèle répond à vos attentes pour vos propres besoins avant d'appliquer le modèle au monde réel. Pour l'optimisation et l'ajustement des paramètres, il fournit également une recherche par grille et une recherche aléatoire.

Aucune de ces fonctionnalités ne serait possible sans un fort soutien de la communauté, ou si elle n'est pas bien entretenue. Nous attendons avec impatience sa première version stable.

Statsmodels

Statsmodels est une autre bibliothèque puissante axée sur les modèles statistiques, principalement utilisés pour l'analyse prédictive et exploratoire. Si vous souhaitez ajuster des modèles linéaires, effectuer une analyse statistique ou une modélisation prédictive, Statsmodels est une solution idéale. Les tests statistiques qu'il propose sont assez complets et couvrent la plupart des tâches de vérification.

Si vous êtes un utilisateur R ou S, il fournit également la syntaxe R pour certains modèles statistiques. Son modèle accepte également les trames de données Numpyarrays et Pandas, faisant des structures de données intermédiaires une chose du passé !

PyMC

PyMC est destiné à réaliser des **Courbes de Bayes** outils. Il contient des outils de diagnostic pour les modèles bayésiens, les distributions statistiques et la convergence des modèles, ainsi que certains modèles hiérarchiques. Si vous souhaitez effectuer une analyse bayésienne, vous devriez la vérifier.

Shogun

Shogun1 est une boîte à outils d'apprentissage automatique axée sur les machines à vecteurs de support (SVM), écrite en C. Il est en cours de développement et de maintenance actifs, fournit une interface Python et constitue également l'interface la mieux documentée. Cependant, par rapport à Scikit-learn, nous avons trouvé son API plus difficile à utiliser. De plus, il n’existe pas beaucoup d’algorithmes de diagnostic et d’évaluation prêts à l’emploi. Cependant, la rapidité constitue un gros avantage.

Gensim

Gensim est défini comme une "modélisation de sujets pour humains)". Comme décrit sur sa page d'accueil, il se concentre sur l'allocation latente de Dirichlet (LDA) et ses variantes. Contrairement à d’autres packages, il prend en charge le traitement du langage naturel et peut plus facilement combiner le NLP et d’autres algorithmes d’apprentissage automatique.

Si votre domaine est en PNL et que vous souhaitez faire de l'agrégation et une classification de base, vous pouvez y jeter un œil. Actuellement, ils introduisent la représentation textuelle de Google word2vec basée sur le RecursiveNeural Network (Recurrent Neural Network). Cette bibliothèque est écrite exclusivement en Python.

Ogamme

Orange est le seul à disposer d'une interface utilisateur graphique (GUI) parmi toutes les bibliothèques répertoriées dans cet article. Il est assez complet pour les méthodes de classification, d'agrégation et de sélection de fonctionnalités, ainsi que pour certaines méthodes de validation croisée. Il est meilleur que Scikit-learn sous certains aspects (méthode de classification, certaines capacités de prétraitement), mais son adaptabilité à d'autres systèmes de calcul scientifique (Numpy, Scipy, Matplotlib, Pandas) n'est pas aussi bonne que Scikit-learn.

Cependant, inclure une interface graphique est un avantage très important. Vous pouvez visualiser les résultats des méthodes de validation croisée, de modèles et de sélection de fonctionnalités (certaines fonctionnalités nécessitent l'installation de Graphviz). Pour la plupart des algorithmes, Orange possède ses propres structures de données, vous devez donc regrouper les données dans une structure de données compatible avec Orange, ce qui rend sa courbe d'apprentissage plus raide.

PyMVPA

PyMVPA est une autre bibliothèque d'apprentissage statistique, l'API est très similaire à Scikit-learn. Contient des outils de validation croisée et de diagnostic, mais n'est pas aussi complet que Scikit-learn.

Deep Learning

Bien que l'apprentissage profond soit une sous-section de l'apprentissage automatique, la raison pour laquelle nous avons créé une section distincte ici est qu'il a récemment attiré beaucoup d'attention de la part des services d'acquisition de talents de Google et Facebook.

Theano

Theano est la bibliothèque d'apprentissage profond la plus mature. Il fournit une bonne structure de données (tenseur) pour représenter les couches d'un réseau neuronal, ce qui est très efficace pour l'algèbre linéaire et est similaire au tableau de Numpy. Il convient de noter que son API peut ne pas être très intuitive et que la courbe d'apprentissage de l'utilisateur sera élevée. Il existe de nombreuses bibliothèques basées sur Theano qui profitent de ses structures de données. Il prend également en charge la programmation GPU prête à l'emploi.

PyLearn

Il existe une autre bibliothèque basée sur Theano, PyLearn2, qui introduit la modularité et la configurabilité de Theano, vous pouvez transmettre différents fichiers de configuration à créer le réseau neuronal, ce qui facilite l'essai de différents paramètres. On peut dire que si les paramètres et attributs du réseau de neurones sont séparés dans le fichier de configuration, sa modularité sera plus puissante.

Decaf

Decaf est une bibliothèque d'apprentissage en profondeur récemment publiée par l'UC Berkeley. Elle a été testée dans le cadre du défi de classification Imagenet et a constaté que sa mise en œuvre de réseau neuronal est très avancée (état de l'art).

Nolearn

Si vous souhaitez utiliser l'excellente API de la bibliothèque Scikit-learn en apprentissage profond, Nolearn encapsulant Decaf vous facilitera son utilisation. Il s'agit d'un wrapper autour de Decaf, compatible (principalement) avec Scikit-learn, ce qui rend Decaf encore plus incroyable.

OverFeat

OverFeat est le récent vainqueur de Cats vs. Dogs (kaggle challenge) 4. Il est écrit en C et contient également un wrapper Python (avec Matlab et Lua). Il utilise le GPU via la bibliothèque Torch, donc c'est rapide. A également remporté le défi de détection et de localisation de classification ImageNet. Si votre domaine est la vision par ordinateur, vous voudrez peut-être y jeter un œil.

Hebel

Hebel est une autre bibliothèque de réseaux neuronaux avec prise en charge GPU disponible immédiatement. Vous pouvez déterminer les propriétés du réseau neuronal via des fichiers YAML (similaires à Pylearn2), offrant un moyen convivial de séparer le réseau de niveau divin du code et d'exécuter le modèle rapidement. Comme elle n’a été développée que sur une courte période, la documentation manque de profondeur et d’étendue. Quant au modèle de réseau de neurones, il est également limité car il ne prend en charge qu'un seul modèle de réseau de neurones (feed-forward).

Cependant, il est écrit en Python pur et sera une bibliothèque très conviviale car elle contient de nombreuses

fonctions pratiques, telles que des planificateurs et des moniteurs, que nous n'avons pas trouvés dans d'autres bibliothèques. .

Neurolab

NeuroLab est une autre bibliothèque de réseaux neuronaux conviviale pour les API (similaire à Matlabapi). Contrairement à d'autres bibliothèques, elle contient différentes variantes d'implémentations de réseaux neuronaux récurrents (RNN). Si vous souhaitez utiliser RNN, cette bibliothèque est l'un des meilleurs choix parmi les API similaires.

Intégration avec d'autres langages

Vous ne connaissez pas Python mais êtes très bon dans d'autres langages Ne désespérez pas L'un des points forts de Python (entre autres) est qu'il est parfait ? langage Glue, vous pouvez utiliser votre Langage de programmation habituel, accéder à ces bibliothèques via Python. Les packages suivants pour différents langages de programmation peuvent être utilisés pour combiner d'autres langages avec Python :

R -> RPython

Matlab -> - > Jython

Lua -> Lunatic Python

Julia -> PyCall.jl

Bibliothèques inactives

Ces bibliothèques ne sont pas disponibles pour plus d'un an Toutes les mises à jour publiées, nous les répertorions car vous pourriez les trouver utiles, mais il est peu probable que ces bibliothèques reçoivent des corrections de bogues, en particulier des améliorations futures.

MDP2MlPy

FFnet

PyBrain

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn