Résumé des bibliothèques d'apprentissage automatique couramment utilisées en Python

巴扎黑
Libérer: 2017-08-17 11:28:11
original
1768 Les gens l'ont consulté

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 (le Python Package Index (PyPI) a renvoyé 139 résultats lors de la recherche de "machine learning"), mais de lister celles que nous savons utiles et bien entretenues. de ceux-là.

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, car 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 fournit de **nombreuses** méthodes d'évaluation, de diagnostic et de validation croisée disponibles immédiatement (cela vous semble familier ? Python Il fournit également la méthode "la batterie est prête"). 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.

En outre, 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 (algorithme Term Frequency Inverse Document Frequency), un prétraitement (mots vides/mots vides, 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 (ensembles 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 vos propres petits ensembles de données basés sur ces ensembles de données afin de pouvoir tester si le modèle répond à vos attentes pour vos propres besoins avant de l'appliquer 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 tableaux Numpy et les trames de données Pandas, faisant des structures de données intermédiaires une chose du passé

PyMC

PyMC est un outil pour réaliser des **courbes de Bayes** ! 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 les 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 réseau neuronal récurrent. Cette bibliothèque est écrite exclusivement en Python.

Orange

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é à Theano. Vous pouvez créer des réseaux de neurones via différents fichiers de configuration, essayez ceci Différents paramètres seraient plus faciles. On peut dire que si les paramètres et propriétés du réseau neuronal sont séparés en fichiers 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 la technique).

Nolearn

Si vous souhaitez utiliser l'excellente API de la bibliothèque Scikit-learn en apprentissage profond, Nolearn qui encapsule Decaf vous facilitera l'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 comprend é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, elle est écrite 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ées 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 bon dans d'autres langages Ne désespérez pas L'un des points forts de Python (entre autres) c'est qu'il est ? un langage de colle parfait que vous pouvez utiliser. Utilisez votre propre langage de programmation couramment utilisé pour 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal