15
Scikit Learn Apprentissage statistique en Python Ga¨ el Varoquaux http://scikit-learn.org

Scikit learn: apprentissage statistique en Python

Embed Size (px)

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

Page 1: Scikit learn: apprentissage statistique en Python

Scikit LearnApprentissage statistique en Python

Gael Varoquaux —

http://scikit-learn.org

Page 2: Scikit learn: apprentissage statistique en Python

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

Page 3: Scikit learn: apprentissage statistique en Python

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

Page 4: Scikit learn: apprentissage statistique en Python

Choix technologiques

Python, what else?Langage haut-niveau,

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

Page 5: Scikit learn: apprentissage statistique en Python

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”

Page 6: Scikit learn: apprentissage statistique en Python

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

Page 7: Scikit learn: apprentissage statistique en Python

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)

Page 8: Scikit learn: apprentissage statistique en Python

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

Page 9: Scikit learn: apprentissage statistique en Python

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)

Page 10: Scikit learn: apprentissage statistique en Python

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 )

Page 11: Scikit learn: apprentissage statistique en Python

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

Page 12: Scikit learn: apprentissage statistique en Python

Quelques estimateurs

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

Page 13: Scikit learn: apprentissage statistique en Python

Quelques estimateurs

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

Page 15: Scikit learn: apprentissage statistique en Python

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