Actualités

[26/06/2017] Smile acquiert Hypertexte, expert en référencement naturel (SEO) et en contenus optimisés

Smile annonce l’acquisition de l’agence Hypertexte, spécialiste du référencement naturel, de la conception et de la réalisation de contenus pensés pour le SEO.

[21/06/2017] Smile dans le top 10 des entreprises où il fait bon travailler !

Smile entre dans le classement très fermé des entreprises où il fait bon débuter sa carrière. Un palmarès publié dans Les échos et réalisé par Meilleures-entreprises.com.

[20/06/2017] Smile classé 1er hébergeur en haute disponibilité depuis 3 mois

Depuis début mars, soit 3 mois consécutifs, Smile est à la tête du Classement des Hébergeurs en haute disponibilité, réalisé par ip-label et le Groupe NextRadio TV (01net, BFM, RMC).

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

Introduction au notebook Jupyter

Un notebook pour data scientist est une application web permettant de développer, tester, partager et publier le résultat d'analyses machine learning et visualisation de données.

Introduction au notebook Jupyter

Jupyter est un notebook Open Source qui permet de créer des documents avec différents langages de traitement de données et de les exécuter au travers de modules d’exécution.

Jupyter permet notamment :

  • De coder des analyses dans plusieurs langages et modules de machine learning parmi lesquels Python, R, Scala et scikit-learn,
  • De projeter les résultats sous forme de graphiques et cartographies interactifs et de tableaux,
  • De s’appuyer sur Apache Spark, au travers d’Apache Toree, pour l’exécution Big Data des analyses; d’autres mécanismes/noyaux d’exécution sont également disponibles,
  • D'enregistrer des documents d’analyse en JSON,
  • De s’appuyer sur un annuaire LDAP ou OAuth pour sécuriser l’accès aux documents.

Illustration avec l’analyse de cas du naufrage du Titanic

Présentation du cas d’usage

Le cas d’analyse du désastre du Titanic est entièrement présenté à l’adresse https://www.kaggle.com/c/titanic. Il s’agit de déterminer à partir de la liste des passagers ayant embarqué, ceux ayant survécu et les facteurs de survie des passagers du Titanic.

Le cas est plutôt simple, il s’agit d’une résolution de cas à l’aide de machine learning en Python, par deux jeux de données, fournis au format CSV.

Jeux de données

Les deux jeux de données ont la même forme avec un détails près, la colonne “Survived” :

Introduction au notebook Jupyter

Le 1er jeu de données ici est appelé Train, c’est-à-dire le jeux de données avec lequel nous allons entraîner l’algorithme et faire de l’analyse de données afin de déterminer quelles sont les ressources importante ou non pour résoudre ce cas.

Le 2ème jeu de données est de la même forme, avec la colonne “Survived” en moins, car elle sera à déterminer.

Construction itérative de l’analyse

Nous avons besoin de plusieurs librairies pour mener à bien cette tâche. La ligne %matplotlib inline fait partie des lignes magiques de Jupyter, ici elle sert à intégrer les graphes en bloc dans le résultat du bloc d’instruction de Jupyter, on reviendra dessus plus tard.

Introduction au notebook Jupyter

Nous devons faire une analyse de la pertinence du set pour obtenir les composantes importantes à l’apprentissage afin de pouvoir construire l'algorithme. Nous reviendrons sur la notion d’apprentissage plus tard aussi.

Voici à quoi ressemble les données de Train :

Introduction au notebook Jupyter

Dans un premier temps, je facilite la tâche grâce aux valeurs numériques et écarte les chaînes de caractères; dans un soucis de compréhension, je le mentionne et fournis la transformation :

Introduction au notebook Jupyter

Ici nous avons donc un premier résultat et constat :

Introduction au notebook Jupyter

Il y avait plus d’hommes que de femmes sur le Titanic, mais le ratio n’est pas proportionnel sur les hommes et les femmes en vie.

Si nous illustrons ceci avec un graphe (incrusté dans le notebook grâce à la ligne magique), on observe donc parmi les survivants, il y a plus de femmes que d’hommes.

La librairie panda nous permet de faire des calculs croisées sur les données du csv que nous avons chargé et matplotlib de nous les transmettre en graphes.

Mais à quoi servent ces valeurs ? C’est le début de notre recherche et nous allons obtenir un premier résultat qui fait sens.

Introduction au notebook Jupyter

Soit 18% d’hommes ont survécut contre 74% de femmes. Pourquoi cette donnée fait sens ? J’ai regardé le film et lu plusieurs livres sur le Titanic pour plus d’immersion, et nous retrouvons systématiquement, l’expression “les femmes et les enfants d’abords”. Évidement, le même résultat est obtenu chez les enfants mais sans distinctions de sexe.

A partir de ce moment, nous pouvons descendre plus bas dans notre recherche. La portion de code suivante illustre la proportion de femmes qui on survécut en fonction de la porte :

Introduction au notebook Jupyter

On voit clairement que la porte S est plus meurtrière que les autres.

Grâce à ces données que nous trouvons nous même par de simples calculs, nous sommes capables de fournir un modèle qui permettra à l'algorithme de prendre des décisions. C’est ce processus que nous appelons apprentissage.

Évidement , je n’ai illustré qu’un cas simple et je l’ai tronqué. Pour vous donner un ordre d’idées, je suis arrivé à la conclusion par un arbre binaire, si une femme ou un homme entre 18 et 60 ans allait mourir en fonction de la porte et de sa classe. Ce résultat me donne une précision de 78% environ.

J’ai créé un petit script me permettant directement de visualiser le résultat pour ne pas avoir à toutes les faire une par une.

Introduction au notebook Jupyter

Mais 78% n’est pas assez, il nous faut plus de correspondance. J’ai donc ensuite mixé les données afin d'obtenir des résultats plus concrets. Concret ne veut pas dire que ceci à du sens, multiplier la taille du prénom par le prix du ticket n’a à priori aucun sens. Mais dans le machine learning ceci peut en avoir.

Il existe de nombreuses méthodes afin de parvenir à un résultat. Pour ma part, l'entraînement de mon algorithme et mon modèle on été utilisés dans une RandomForest, qui n'est ni plus ni moins qu’une succession d'arbres binaires avec une question à laquelle la réponse est Oui ou Non.

Introduction au notebook Jupyter

Pour déterminer qu’une donnée est importante, nous avons utilisé une méthode dite de cross validation qui nous permet de nous montrer le poids décisionnelle de nos arbres sur un résultat donné.

Introduction au notebook Jupyter

Ici nous avons un graphe qui illustre en rouge les utilisations de nos composantes, et en bleu le poids des bascules associées. Toutes composantes supérieures au poids à une valeure numérique supérieure à 0.1. Dans l'état actuel, le graphe ne sert plus à rien, mais les valeurs numériques en dessous si.

Nous pouvons constater que split_Sex_female et split_Sex_male sont très importantes. Ces deux variables sont le processus de recherche décrit plus haut. La variable Family_size est l’ajout de 3 ligne qui représente la famille à bord, elle frôle l’importance. En revanche, nous constatons que certaines composantes ne sont pas utiles, toutes celles inférieures à 0.1.

Conclusion

Jupyter permet de construire et projeter des résultats d’analyses au format web. Ces résultats sont issus d’une interprétation rapide et partielle du code réalisé en bloc. Pourquoi partielle ? Pour la simple et bonne raison que chaque bloc permet d'être exécuté de façon indépendante des autres.

Ce qui s’en dégage est une façon itérative, rapide, efficace et claire de développer.

Jupyter met également à disposition un panel de possibilités quasi illimité, que ce soit dans la structure, le développement en lui même ou bien encore l’interprétation des données que nous souhaitons modeler.

Florian GOUDOT
picto

Commentaires

Soyez la premiere personne à ajouter un commentaire sur cet article.
Ecrire un nouveau commentaire