Scikit Learn
Apprentissage statistique en Python
Ga¨el Varoquaux —
http://scikit-learn.org
Vision du projet
L’apprentissage statistique pour tous
Pas de domaine d’application sp´ecifique
Pas de pr´erequis en machine learning
Librairie logicielle de qualit´e
API pens´ees pour l’utilisateur
D´eveloppement communautaire
License BSD, contributeurs tr`es vari´es
Philosophie
1. Keep it simple
Ne pas chercher `a tout r´esoudre
2. Facilit´e d’utilisation
Bonne documentation
Facile `a debugger
3. Efficacit´e num´erique
Dans les limites de 1
4. Limiter les d´ependances
La distribution est un probl`eme en soit
Choix technologiques
Python, what else?
Langage haut-niveau,
- interactif,
- facile `a debugger,
- d’application g´en´erale
´Ecosyst`eme tr`es dynamique
Choix technologiques
+ Numpy
+ Scipy
calcul num´erique, alg`ebre
lin´eaire, algorithmique sur graphe
numpy.array: conteneur
universel de donn´ees structur´ees
Les outils des sciences
num´eriques sont sous-utilis´es
par la communaut´e “data”
Performance
scikit-learn mlpy pybrain pymvpa mdp shogun
SVM 5.2 9.47 17.5 11.52 40.48 5.63
LARS 1.17 105.3 - 37.35 - -
Elastic Net 0.52 73.7 - 1.44 - -
kNN 0.57 1.41 - 0.56 0.58 1.36
PCA 0.18 - - 8.93 0.47 0.33
k-Means 1.34 0.79 ∞ - 35.75 0.68
Optimisations algorithmiques et non bas niveau
Minimiser les copies des donn´ees
API: sp´ecifier un mod`ele
Un concept central: l’estimateur
Instanci´e sans les donn´ees
Mais en sp´ecifiant ses param`etres
from s k l e a r n . n e i g h b o r s import
KNear estNeig hbo r s
e s t i m a t o r = KN ea r estNe ig h b or s (
n n e i g h b o r s =2)
API: entraˆıner un mod`ele
Apprendre `a partir de donn´ees
e s t i m a t o r . f i t (X, Y)
o`u:
X est un tableau numpy de forme
nobservations × ndescripteurs
y est un tableau numpy, entier ou flottant
nobservations
API: utiliser un mod`ele
Prediction: classification, regression
Y 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, filtre
X 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 densit´e, vraissemblance
t 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 donn´ees brutes `a la matrices X
Pour le texte: compter les occurrences de mots
- Donn´ees d’entr´ee: liste de documents (string)
- Donn´ees de sortie: matrice num´erique
from 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 r
h 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 )
Fonctionalit´es
Apprentissage supervis´e
Arbres de d´ecision (Random-Forest, Boosted Tree)
Mod`eles lin´eaires
SVM
Apprentissage non supervis´e
Clustering
Apprentissage de dictionnaire
D´etection d’outliers
S´election de mod`eles
Validation crois´ee int´egr´ee
Optimisation de param`etres
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
Clustering
http://scikit-learn.org/stable/auto_examples/cluster/
plot_cluster_comparison.html
Scikit-learn
http://scikit-learn.org
Projet tr`es dynamique
Bien document´e
N´ecessite un peu de savoir-faire technique
Facile `a int´egrer/adapter
PS: Je cherche `a embaucher un ing´enieur
@GaelVaroquaux

Scikit learn: apprentissage statistique en Python

  • 1.
    Scikit Learn Apprentissage statistiqueen Python Ga¨el Varoquaux — http://scikit-learn.org
  • 2.
    Vision du projet L’apprentissagestatistique pour tous Pas de domaine d’application sp´ecifique Pas de pr´erequis en machine learning Librairie logicielle de qualit´e API pens´ees pour l’utilisateur D´eveloppement communautaire License BSD, contributeurs tr`es vari´es
  • 3.
    Philosophie 1. Keep itsimple Ne pas chercher `a tout r´esoudre 2. Facilit´e d’utilisation Bonne documentation Facile `a debugger 3. Efficacit´e num´erique Dans les limites de 1 4. Limiter les d´ependances La distribution est un probl`eme en soit
  • 4.
    Choix technologiques Python, whatelse? Langage haut-niveau, - interactif, - facile `a debugger, - d’application g´en´erale ´Ecosyst`eme tr`es dynamique
  • 5.
    Choix technologiques + Numpy +Scipy calcul num´erique, alg`ebre lin´eaire, algorithmique sur graphe numpy.array: conteneur universel de donn´ees structur´ees Les outils des sciences num´eriques sont sous-utilis´es par la communaut´e “data”
  • 6.
    Performance scikit-learn mlpy pybrainpymvpa mdp shogun SVM 5.2 9.47 17.5 11.52 40.48 5.63 LARS 1.17 105.3 - 37.35 - - Elastic Net 0.52 73.7 - 1.44 - - kNN 0.57 1.41 - 0.56 0.58 1.36 PCA 0.18 - - 8.93 0.47 0.33 k-Means 1.34 0.79 ∞ - 35.75 0.68 Optimisations algorithmiques et non bas niveau Minimiser les copies des donn´ees
  • 7.
    API: sp´ecifier unmod`ele Un concept central: l’estimateur Instanci´e sans les donn´ees Mais en sp´ecifiant ses param`etres from s k l e a r n . n e i g h b o r s import KNear estNeig hbo r s e s t i m a t o r = KN ea r estNe ig h b or s ( n n e i g h b o r s =2)
  • 8.
    API: entraˆıner unmod`ele Apprendre `a partir de donn´ees e s t i m a t o r . f i t (X, Y) o`u: X est un tableau numpy de forme nobservations × ndescripteurs y est un tableau numpy, entier ou flottant nobservations
  • 9.
    API: utiliser unmod`ele Prediction: classification, regression Y 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, filtre X 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 densit´e, vraissemblance t 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)
  • 10.
    Vectorization Passer des donn´eesbrutes `a la matrices X Pour le texte: compter les occurrences de mots - Donn´ees d’entr´ee: liste de documents (string) - Donn´ees de sortie: matrice num´erique from 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 r h 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 )
  • 11.
    Fonctionalit´es Apprentissage supervis´e Arbres ded´ecision (Random-Forest, Boosted Tree) Mod`eles lin´eaires SVM Apprentissage non supervis´e Clustering Apprentissage de dictionnaire D´etection d’outliers S´election de mod`eles Validation crois´ee int´egr´ee Optimisation de param`etres
  • 12.
  • 13.
  • 14.
  • 15.
    Scikit-learn http://scikit-learn.org Projet tr`es dynamique Biendocument´e N´ecessite un peu de savoir-faire technique Facile `a int´egrer/adapter PS: Je cherche `a embaucher un ing´enieur @GaelVaroquaux