You are on page 1of 16
2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus, Initiation au Machine Learning avec Python - La pratique Per Gat Pessco— puns 070872017 Dans ce tutoriel en 2 parties nous vous proposons de découvrir les bases de 'apprentissage automatique et de vous y initier avec le langage Python. Cette seconde partie vous permet de passer enfin a la pratique avec Je langage Python et la librairie Scikit-Learn { ator au matin ering aves Pyinon- La prague e Introduction a Scikit Learn Sekis Lear ‘Sckkts-Leam ast une libraie 'apprentssage automatique couvrant fensemble dela cisiptine Les types d'apprentissage - supervisé, non supervisé, par renforcement, par transfor, Les algorthmes. Linear Regression (régression linéaire), Logistic Regression (regression log'stique), Decision Tree (arbre de décision), ‘SVM (machines & vecteur de suppor), Naive Bayes (classification naive bayésianne), KNN (Plus proches voisns), Dimensionalty Reduction Algorithms, Gradient Boost & Adaboost Réssaux de neurannes Pourquoi débuter avec Scikit-Learn Cestune bonne idée de débuter a décowere de Fapprenssage automatque avec cate irae Elle dispose dune excelente documentation fournissant de nombreux exemples Eile dispose dune API unitorme entre tous es agoritymes, ce qui fat qui es facile de basculer de fun & autre Ele est tres bien integrée avec les Lirainies Pandas et Seabon Ele dispose dune grande communauté et de plus de 800 controutours référence sur ‘Cet un projet open source + Son cade est rapide, certaines partes sont implémentées en Cython Ensuite, quand vous en aurez faite tour, vous pourrez basculer vers d'autres lrares plus optmisées ou spécialisées sur une sujet précis (type dapprentssage,algorthme, matériel, ..). Notre chapire de présentation du Machine Learning propose deja un ton panel des autres salutions a votre disposition Les concepts de la librairie Les données \Vos données sont représentées par des tableaux & 2 dimensions. “Typiquement, des tableaux Numpy ou Pandas ou Python, Les ignes représentent les enrogistraments Les colonnes les attrbuts (hauteur, longueur, couleur, autre information) Une donnée est un vectaur de paramtres, généralement des réas, mais les entiars, booléens ot valeurs cscrétes sont autorisées dans certains cas Les labels peuvent are de diférens types, généralement des enters ou chatnes Les labels sont contenus dans un tableau & une dimension, sautrares cas ol ls peuvent re dans le vecteur de paraméttes Prédiction LLalgoithme de prbdicion est représonté par une classe. + Vous devez commencer par cholsrfalgorthme & uilser, ue nous appelerons prédictou/lassiourfestiator Les algorthmes sont des, classes Python. Les données sant toujours des tableaux Numoy/Scipy/PandasiPython ous précisez ses éventuels parameétres, appelés hyperparamétres en instanciantla classe \Vous Falimentez avec a fonction fit dane le cas dun apprentseage supervise \Vous lancez fa prédiction sur un ensemble de valeurs va la foncion predict parfois appelée transform dans le cas de 'apprentissage non supervisé Découverte par la pratique - Classer une fleur selon des critéres observables Nous allons utlser pour ce tutoril la base de données ris de a libraiie scikitieam hitps:/Imakina-corpus.comlblog!metir!2017/intiaton-au-machine-leaming-avec-python-pratique a6. 2orror2019 Ination au Machine Learning avec Python - La pratique — Makina Corpus, Mais quel est done cetiris ? ‘Cet exemple est ts souvent repris sur Internet. Nous ne dérogerons pas ala ragle. Nous réaiserons cependant un cas dutlisation plus ‘complet que la plupart des exemples que vous pourrez trouver Cette base content des I's qu'un botanste, Ronald Fisher, @classés en 1996 a aide dune clef ddentication des plants (type de pélales, sépale, type des fulles, forme des feulles, Puls, pour chaque fleur classée Ila mesuré les longueurs ot largours des sépales et pétale. Uidée qui nous vient alors, consiste & demander & fordinateur de déterminer automatiquement lespéce d'une nouvelle plante en fonction do la mesure des dimensions de ses sépales ot pétales que nous aurions réalisée sue lerain, Pour cela nous lui domanderons de ‘construire sa décision a parr ae a connaissance exrate des mesures alsées par M. Fisher. ‘Autrement dt, nous allons donner & fordinateur un jou de données déja lassées ot lui demander de classer de nowelles données 4 partir. de coli, ‘Crest un cas dapprentissage supervisé (mais nous le ransformerons aussi en non supervisé), Une fois almentés avec les observations connues, nos prédicteurs vont chercher @identfier des groupes parm les planes déja connues {et détermineront quel est te groupe duguel se rapproche le plus notre observation Botanistes en herbe, & vos claviers ! "Note pour les natualstes amateurs: ‘Si vous aimez les clefs de détermination, une des plus connues est calla de M. Gaston Bonnier. Sas livres sont aujourd hui ans le domaine puble. Chargement de la base La variable ris est dun type inhabiue, découvrons-e Découverte du contenu de la base i [rim «ep ran tw reo nar Rien de bien commun pour un Pythonise, Lattibutfeature_names content le nom des até sépaes. 's paramdtes de nos données, ils'agit des longueurs ot argeurs de pétales hps:/makina-corps comblogimeti?20"Zintaton-au-machineleaming-avec-python pratique 2n6 2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus, La iste dos espaces connues, nos labels de classification, est contenue dans fattibutlarget_names ise vseletarae a erer(a) at Us Label ar santa 0) Les targets sont un tableau indiquant le numéro de Fespece de chaque enregistrement: En résumé, téchantilon do flours propose plusious informations: + Les noms des données disponibles: feature_names + Les mesures réalisées sur Féchantllon de fleus connues at dja cassées : data 1 sagt de nos informations, das paramélras da nos vacteurs pour chaque flour + Le nom de chaque espace: target names + Le classoment de chaque envegistement data dans son espdce target I Sagit dela classe de chaque feurivecteur Seo ten mone sng 3 Imakina-corpus.comiblagimetier!2017/nitaton-au-machine-leaming-avec-python pratique ane 2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus, Observation des données ‘Avant de commencer & classer ses données il est toujours bon de visualiser& quoi elles ressemblent et si dléventuelles relation dossinent. [eters my oe2 | Set ata "Nous avons done 150 observations de 4 valeurs Visualsons les “ | oes Dicpimelttebees 95 Sesh 3 paint teeme de pal (8) cee aE om wpe oe ts | | | eatmenctocattonotntet, ramaanfase,tabetspctnee, | eaesechos tty iby oweoaar rig”, sient u Observer avec Seaborn ‘Cost assez vite écrit ode fort parlant la séparaton des groupes entre les longueurs et largeurs de pétales semble irs nett et détermnante! "Nous pourrions aussie fare entre les longueurs de pétaes et largeurs de sépales et inversement mbme si cela semble moins naturel La librarie Seaborn propose une matrce préte& Templo via le graphique Scaterpot Matrix pour réaliser ce type de graphique: hitps:/Imakina-corpus.comlalogimetier!2017/intiaton-au-machine-leaming-avec-python-pratique ane 2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus, xpi [ga wan mp nom [pa wan enn alse 5 m e to sles fe is is (ae ler az 3 eof Ire pisaGepopi owe oon ° pte Apprentissage "Nous pourtions ici uliser plusieurs algorithms. "Nous propesons de commencer parla classification Naive Bayes qui suppose que chaque classe est construite& partr ¢une distribution Gaussionne aignée, Elle nimpose pas de défnir ahyperparamétres et est tes rapide. [ roe mie ar nasi (Création ou lasifiour hitps:/Imakina-corpus.comlblogimetier!2017/ntiaton-au-machine-leaming-avec-python-pratique ene 2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus, Qualité de la prédiction ‘Observons la qualité de la prédicton La ou la prédiction est juste, la diférence de result- target doit ére égale& 0. Sila précton est partate nous aurons des zéros dans tout letableau, Ce qui est penne CCalculons le pourcontage derrour ‘On aurait pu penser que les tableaux seraient par‘atementidentiques, mais fagorithme utlisé estime vraiment le label inal en fonction dos rgles de probabillé quila établies. Ces ragles ne sont pas rigoureusement deniques & la al. Cola prouve aussi que algorthme essayo de tower un classoment intoligont ot ne se contonte pas de comparor ls valoursdrigines ‘aux valour entrants. "Notre solution pour mesure la qualité dela prédiction est rés rudimentae, Scki-Learn propose des solutions plus abouties: | ees hitps:/Imakina-corpus.comlblogimetier!2017/intiaton-au-machine-leaming-avec-python-pratique ane 2orror2019 Ination au Machine Learning avec Python - La pratique — Makina Corpus, ‘Von observe il que: spece Setosa a été parfaitementidentiiée 3 Virginia ont été confondues avec des Versicolor et inversemment Co rest pas rds surprenant los graphiques montrent une netto séparation des Setosa avec los 2 autres groupes qui sont nettemant moins detaches, A 1 Séparation du jeu de tests et d'apprentissage [Nous ne disposons que dun seul jou de données connues, {Généralement on teste Falgrithme sur de nouvelles données, sinon les résultats sont forcément toujours trés bons. "Nous pourrions choisirun enrogistrement sur 2 comme ci-dessous: ‘Mais ce n'est pas une trés bonne méthode Dans cot exemple nous sélectionnons un enrogisrement sur 2. Nous nous en sortons bion car tutes les flours sont regroupées par ordre de famille dans le tableau, mais sles selosa avaient été stockées 1 sur 2 elles auralent sol toutes 6 ulisées pour Tapprenissage et aucune raurait fgurd dans le jou de tests, ou inversement. ‘Le module model_selection de Sciki-Learn propose des fonctions pour séparer le jeu de données du jeu de tests qui sont attentves & ce ‘ype de petits prablemes: [Fees ewer sttetan gre ae hitps:/makina-corpus.comlblogimetier!2017/intiaton-au-machine-leaming-avec-python-pratique 76 2orror2019 Intation au Machine Leaming avec Python - La pratique — Makina Corpus, La fonction irain_test_splt permet de décomposer le jou de données on 2 groupes: les données pour 'apprentissage et les données pour los tests, ‘Le paramétretrain_size ndique la tale du jeu e'apprentissage qui sera ulisé: 60% des enregistrements. Cola este toujours tes bon! [Affchons la matrce de contusion: ‘Surles 78 plantes prites, 4 Vrgnica ont été confondues avec des Versicalor Affichons les territoires de la classification Notre prédicteur s'est “constrult une image" de nos données. Visualisons8 pour toutes les combinalsons de longueurs et largeurs de sépates connues. idéo ost la suivante: "Nous construisons un maillage de toutes las combinaisons possibles des longueurs ot largeurs des sépales comprises entre [ours valeurs ‘rinimax Pour chaque couple de point (longueur,largeur) compris entre les minimax abservés nous demandons de pri + Nous affchons sur la carta les préictons réallsées (une couleur pour chaque paint) pce de a Nour = Sa Se tele i hitps:makina-corpus.comlblog!metier!2017/intiaton-au-machine-leaming-avec-python-patique ane 2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus. Les longueurs varient entre 3.2 et 8.9 em et 1.0 et 6.4 em pour les largeurs. [Tacsserstnn, senses, 19, sain "Nous allons maintenant créer une malice contenant loutes le poinls stués entre les valeurs minimales et maximales des longueurs et largours des sépales La fonction meshgrid permet cobtenir une grile de coordonnées pour les valeurs des points comprises entre x min, x_max et y_min, [oeontrsa. aan ae ss, 87 US. SR. Seo Sa eR | | Fs A sco SR Ss age (BSS ER eR Irversemaent, le tableau yy, contiont chaque largeur répétée autant de fis quily a de mesures di La fonction rave! applatt un tableau &.n dimensions ont tableau dune dimension hitps:/Imakina-corpus.comlalog!metier!2017/intiaton-au-machine-leaming-avec-python-pratique one 2ortor2019 Intation au Machine Leaming avec Python - La pratique — Makina Corpus, ne sont autres que des mesures de fleur imaginares comprises entre les valeurs minimax connues. leur espice pour voir fextension des torntores de chacune dela, ‘que classée par fordinateur ‘Nous pouvons maintenant aficher les espdces telles que Falgorthme les évalueratsi nous les mesurerions dans la nature: Cette image, nest autre que votre clef de déterminaton: Imprimez~a et partez identier les leurs sure terrain : mesurez les Tongueurslargours de sépales, recherchez-es surle graphique, la couleur du paint vous donne Tespéce ! ‘Magique non ? {Affchons le mites avec peolormesh [sence | en, tnt) +e es on ps vii i ry hitps:/Imakina-corpus.comlalog!metier!2017/intiaton-au-machine-leaming-avec-python-pratique sone 2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus, Complément Essayons le méme traitement en remplagant GaussianNB par KN. La classe utliser est Si vous travallez dans un notebook Jupytr (frtement recommande), utlse2 le éécarateur Interact pour faire varer Mhyperparametre N du Sion tecs Ieee Le graphique généré montre que ia précction semble la melloure pour N= hitps:/Imakina-corpus.comlblogimetier!2017/intiaton-au-machine-leaming-avec-python-pratique ne 2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus, ‘Sivaus souhsitez découvrir comment optimiser au mieux vos hyperparamétres, a fonction grid Search vous simpifie énormément la recherche des hyperparamétres optimaux. Apprentissage non supervisé ‘Sinous supprimons information targot nous tombons dans lo eas algoritimes de clustaring : nous pouvons toujours domandor & ce que notre algorihme sépare nos données en 3 groupes sans connaissance de leurs véritables stquettes. ‘Saure retrouver les groupes iniiaux ? Réduction de dimension ‘Dans le cas des algoithmes nan supervsésilest rs frequent de disposer de tr grandes quanttés de paramétres. Ne sachant pas ‘encore qui est responsable de quoi ona tendance tout iver la machine Cela pose 2 problemes: ‘La visualisation des données, au dela de 3 paramétres notre cerveau est bien mal outllé pour se représenter les données {La complexté des calcus, plus le nombre de parambtres est grand, plus nous aurons des calculs complexes et longs Pour contouner ces problémes ilest courant de rédure a dimension du vecteur de données & quelque chose de plus simple. La dificuké fst alors de réduire le nombre de paramatres tout en canservant Fessentel de information, notamment les variations succepibles de permet le regroupement des données. Plusiours techniques de récuction sont élsponibles avec Skit eam. "Nous utiiserons pour cet exemple fanalyse en composante principale, dite PCA. Le module manifold propose aussi autres types dalgorthmes. PCA est une technique linéaire de réduction de dimension qua Tavantage d'tre tres rapide. Elle sutise simplement Vous définissez le nombre de paramétres Vous alimentez falgorthme avec les données & réduire \Vous lancez ls préciction ici appelée réduction/tvansformation [Nous venons de réduire notre vectour de 4 paraméires en % vectour de 2 paramétres dont los varations sont consées Biro similares, ‘Autrement dit nous devrions ire capable de classer nos fleur avec ces vecteursrédults en ayant une qualité proche de cele utlisant les vecteurs originaux! ‘Consultation des données exginales: hitps:/Imakina-corpus.comlblogimetier!2017/intiaton-au-machine-leaming-avec-python-pratique rane 2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus ‘sepal length (em) | sepal width (cm) [petal length (om) | petal width (em)| target [label o/s. ss 14 02 0 [sets 1}49 30 14 o2 0 | sets 247 a2 13 02 0 [satel 3/46 3.1 18 02 0 [sets a] 50 36 14 02 0 |setosa ‘Aloutons les nouveaux 5 dans le dataframe dorgine: [er : sepal length (cm) | sepal width (cm) | petal length (om)| petal wiath (em) |target|label [Pcat | PCAZ ols las 14 02 © |setosal -2.604207/ o.s26607 Jae so 14 fo2 0 _|setosa) 2718981 | -0.169567| ala7 s2 13 02 © _|setosa|-2.989820 | -0.197346| BS a 18 oz © | setosal-2.746437|-0.911124] [50 a6 14 02 0 | setosal-2 728588) 0.536825 is affchons les nouveaux couples de points (PCA, PCA2) avec la coulaur de 'espéce associée: LU "Nous obtenons 3 groupes plut6 bien aissociés | ‘Ce qui peut aussts'obtenr avec Seaborn ‘Le résulat est plus satistaisant, et ce qui est assez bluflant c'est que Falgorithme ne connaissail pas du tout les types de Neurs | hitps:/Imakina-corpus.comlalogmetier!2017/intiaton-au-machine-leaming-avec-python-pratique rae 2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus le confrmer, vérifons ‘Maintenant, ce nouveau classement peut: permatire un bon regroupement des 3 espécas ? le graphique sembi cela avec le olustoring Clustering Une reste plus qua exéouter le regroupement, Phsieus algorthmes extent ‘cMeans, qui se rapproche des plus proches voisins dans sa logue, recherche les données proches des centres des clusters, est ts ‘imple mais ses! vraiment afcace que sur des données organisées en cercls. ici nous avons plulat des érates ou des elipses ‘GMM, Gaussian Mixture Modals est plus complexe mais s'adapate tres bien a diferentes formes de clusters (groupes). ‘Seki Leam on propose beaucoup autres comme Spectral clustering, Mean Shit, Hierarchical clustering, ‘Nous utliserons GMM pour cat exemple. La prédicton étant fate, pour chaque groupe géné Le groupe seiose et rs bien den, ya tujours une imprison ei ls classes vigiice et versicolor mais le résuat reste ‘romarquable sur ce peti échantilon. Vue densemble - The big picture Pour vous aider& choisr vos algorithms d'apprentssage automatique, nous repranons ce problematique image de Scki-Learn qui pose assez bien la hitps:/makina-corpus.comlblogimetir!2017/intiaton-au-machine-leaming-avec-python-pratique sane 2orror2019 Ination au Machine Learning avec Python - La pratique — Makina Corpus, classification ‘Vue censemble de Sckitleam Pour aller plus loin lest important de disposer de ressources pour sssayor au machine learning Le site Kaggle propose de nombrouses ressources (eux de données et exemples) sur le machine learning I propose aussi des competions au les membres peuvent comparer leurs algorthmes ‘Beaucoup de sites proposent des joux de données: «© Open data du gouvernemant frangais Enigma io © Une racnerche internet sur Open data vous donnera beaucoup de ressources Conclusion "Nous voll inités au Machine Learning avec Sciki-Learn. La libraie propose de nombreux exemples et jeux de données. Ele est ‘exrémement riche et simple. Les diffculés de cote dsciptine consistent ‘comprendre es notions mathématiques derriére chaque algorithm pour avoir une ide de ours limites ‘choisir les hyperparamétres, bien dimensionner ses jeux de données d'apprentssage Ensuite, quelque soit votre algorithme cesttrés simple: ‘On instance la classe et ses hyper-parametres ‘On foumit es données capprentssage la méthode Msi supervsé) ‘On demande la détermination des données avec la méthode predict ‘Alors allo n'est pas belle a vie ? Contenus corrélés Iniation au Machine Learning avec Python - La théovie Présentation de fécosystdme Python scientifique hitps:/Imakina-corpus.comlalog!metier!2017/intiaton-au-machine-leaming-avec-python-pratique ssit6 2orror2019 Ination au Machine Leaming avec Python - La pratique — Makina Corpus, + Formation Python pour la data sclonce Contact Société Suivez-nous hitps:/Imakina-corpus.comlalogimetier!2017/intiaton-au-machine-leaming-avec-python-pratique 616

You might also like