Scikit learn: apprentissage statistique en Python

Preview:

DESCRIPTION

Présentation au niveau sur "scikit-learn", un toolkit d'apprentissage statistique (machine learning) en Python. Philosophie et strategie du projet, ainsi que API et très bref examples de code.

Citation preview

Scikit LearnApprentissage statistique en Python

Gael Varoquaux —

http://scikit-learn.org

Vision du projetL’apprentissage statistique pour tous

Pas de domaine d’application specifiquePas de prerequis en machine learning

Librairie logicielle de qualiteAPI pensees pour l’utilisateur

Developpement communautaireLicense BSD, contributeurs tres varies

Philosophie1. Keep it simple

Ne pas chercher a tout resoudre

2. Facilite d’utilisationBonne documentation

Facile a debugger

3. Efficacite numeriqueDans les limites de 1

4. Limiter les dependancesLa distribution est un probleme en soit

Choix technologiques

Python, what else?Langage haut-niveau,

- interactif,- facile a debugger,- d’application generaleEcosysteme tres dynamique

Choix technologiques

+ Numpy+ Scipy

calcul numerique, algebrelineaire, algorithmique sur graphe

numpy.array: conteneuruniversel de donnees structurees

Les outils des sciencesnumeriques sont sous-utilises

par la communaute “data”

Performancescikit-learn mlpy pybrain pymvpa mdp shogun

SVM 5.2 9.47 17.5 11.52 40.48 5.63LARS 1.17 105.3 - 37.35 - -Elastic Net 0.52 73.7 - 1.44 - -kNN 0.57 1.41 - 0.56 0.58 1.36PCA 0.18 - - 8.93 0.47 0.33k-Means 1.34 0.79 ∞ - 35.75 0.68

Optimisations algorithmiques et non bas niveau

Minimiser les copies des donnees

API: specifier un modele

Un concept central: l’estimateurInstancie sans les donneesMais en specifiant ses parametres

from s k l e a r n . n e i g h b o r s importK N e a r e s t N e i g h b o r s

e s t i m a t o r = K N e a r e s t N e i g h b o r s (n n e i g h b o r s =2)

API: entraıner un modele

Apprendre a partir de donneese s t i m a t o r . f i t (X, Y)

ou:X est un tableau numpy de forme

nobservations × ndescripteurs

y est un tableau numpy, entier ou flottantnobservations

API: utiliser un modele

Prediction: classification, regressionY t e s t = e s t i m a t o r . p r e d i c t ( X t e s t )

Transformation: reduction de dimension, filtreX new = e s t i m a t o r . t r a n s f o r m ( X t e s t )

Estimation de densite, vraissemblancet e s t s c o r e = e s t i m a t o r . s c o r e ( X t e s t )

Estimation “en-line”e s t i m a t o r . p a r t i a l f i t (X, Y)

Vectorization

Passer des donnees brutes a la matrices X

Pour le texte: compter les occurrences de mots- Donnees d’entree: liste de documents (string)- Donnees de sortie: matrice numeriquefrom s k l e a r n . f e a t u r e e x t r a c t i o n . t e x t

import H a s h i n g V e c t o r i z e rh a s h e r = H a s h i n g V e c t o r i z e r ()

X = h a s h e r . f i t t r a n s f o r m ( documents )

Fonctionalites

Apprentissage superviseArbres de decision (Random-Forest, Boosted Tree)Modeles lineairesSVM

Apprentissage non superviseClusteringApprentissage de dictionnaireDetection d’outliers

Selection de modelesValidation croisee integreeOptimisation de parametres

Quelques estimateurs

http://scikit-learn.org/stable/auto_examples/plot_classifier_comparison.html

Quelques estimateurs

http://scikit-learn.org/stable/auto_examples/plot_classifier_comparison.html

Scikit-learnhttp://scikit-learn.org

Projet tres dynamiqueBien documenteNecessite un peu de savoir-faire techniqueFacile a integrer/adapter

PS: Je cherche a embaucher un ingenieur

@GaelVaroquaux

Recommended