• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 05/08/2019

Familiarisez-vous avec l'écosystème Python

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Choisir le bon outil

Faire de la data science nécessite la maîtrise de deux disciplines. D'un côté, il convient de maîtriser les bases mathématiques et les algorithmes qui permettent de modéliser des données, classifier, et comprendre. On pourrait qualifier cela d'aspect théorique.

D'un autre côté, vous aurez aussi besoin d'un savoir faire technique, pour vous permettre d'implémenter votre vision sur des données réelles. Et comme pour toute tâche, il est essentiel de posséder les bon outils et de les maîtriser. Le choix de l'outil vous appartient, bien sûr. Le bon outil est en premier lieu celui avec lequel vous vous sentez le plus à l'aise. Néanmoins, il existe certains critères pour ce choix, et ce chapitre vise à vous sensibiliser à ces critères et vous permettre de choisir vos outils de départ.

La simplicité VS la puissance

Comme souvent, le choix de l'outil correspond à un compromis entre la simplicité et la puissance de l'outil. Ainsi, vous devrez souvent réfléchir à l'opportunité d'apprendre à vous servir d'un nouvel outil par rapport aux bénéfices qu'il apporte.

Une calculatrice

Vous maîtrisez certainement l'utilisation d'une calculatrice, et techniquement, vous pouvez tout à fait effectuer une régression linéaire armé d'une simple calculatrice. Après tout, Erwin Hubble, n'a pas eu besoin de machines hyper puissantes pour découvrir l'expansion de l'univers.

C'est la figure 1 de l'article :
Vitesse apparente des galaxies en fonction de leur distance

Mais les temps ont changé, et nous ne voulons plus ressembler à ces pionniers passant des jours sur leur calculatrices primitives pour découvrir les secrets de l'univers.

Un tableur

L'étape suivante serait par exemple l'utilisation d'un logiciel tableur. Il serait très simple à utiliser (vous êtes certainement déjà familier avec au moins un logiciel de ce genre), et assez puissant pour tracer la même figure en quelques secondes.

La même relation
La même relation

C'est pas mal. Vous pouvez même encore aujourd'hui utiliser ce genre de logiciel pour beaucoup de tâches. Mais si vous voulez vous adonner à la data science, vous rencontrerez très vite les limites de ces outils :

  1. Il ne peuvent pas faire face à l'énorme quantité de données que nous manipulons régulièrement. Par exemple, le tableur de LibreOffice ne peut gérer que 1024 colonnes et un peu plus d'un million de lignes.

  2. Leur puissance de calcul est très insuffisante. 

  3. Ils ne permettent pas de faire tourner les algorithmes à la pointe.

Logiciels spécialisés

Face à ces limites, les statisticiens ont pendant longtemps eu recours aux logiciels spécialisés. Longtemps réservé aux spécialistes à cause de leurs coûts, on peut notamment citer SAS, surtout utilisé par les statisticiens, et Matlab, plutôt pour les ingénieurs et les chercheurs.

Aujourd'hui, ce sont plutôt les solutions libres et open source qui sont les références dans la boîte à outils du data scientist, pour plusieurs raisons:

  1. Ils sont gratuits

  2. Leur nature libre permet à chacun d'implémenter de nouveaux algorithmes et/ou améliorer les algorithmes existants. 

  3. Leur disponibilité fait que la plupart des chercheurs mettent à disposition leurs travaux dans ces solutions.

R est un descendant de S, lui même un logiciel spécialisé pour les statisticiens. R est très populaire, et est très puissant.

Mon choix personnel s'est porté sur Python, qui techniquement est un langage de programmation, mais qui est devenu grâce à ses nombreux outils une, sinon la, référence en matière de traitement de données. Ce n'était pas chose évidente, d'ailleurs. Rien ne prédestinait à la base Python à devenir autant utilisé par les scientifiques. C'est seulement parce que le langage a attiré l'attention de quelques scientifiques qu'ils ont décidé de s'associer à l'inventeur du langage pour créer un module de calcul matriciel. Numpy était né, et a entraîné la création de toute la suite scientifique Python que nous connaissons aujourd'hui.

Python

Python possède plusieurs propriétés qui en font un outil de choix pour l'analyse de données.

Simplicité

Python est un langage de programmation simple. Par exemple, comparez la complexité d'un programme simple, qui imprime "Hello world", en langage C et en Python.

#include <stdio.h>

int main(void)
{
    printf("hello, world\n");
}
print("Hello World")

Interactivité

Python est un langage interprété. Cela signifie en pratique que vous pouvez lancer un script en Python sans étape de compilation. Cette propriété, bien qu'elle nuit en principe aux performances (nous y reviendrons) permet une grande interactivité. Vous pouvez écrire et exécuter votre programme ligne par ligne, en examinant à chaque fois le résultat. Cette propriété est exploitée a merveille par les notebooks Jupyter (que nous utiliserons dans la suite de ce cours).

L'écosystème

Peut-être le point le plus important, est l'ensemble des outils, des librairies, la communauté, bref, tout ce qui gravite autour du langage lui-même. Python possède des librairies pour à peu près tout ce que vous pouvez imaginer, et notamment:

  • numpy et scipy pour les calculs

  • Matplotlib et Seaborn pour la visualisation

  • Scikit-learn pour les algorithmes

  • Pandas pour les gérer les données (les charger, appliquer des opérations d'algèbre relationnelle, etc.)

  • Tensorflow et PyTorch pour le deep learning

  • etc.

Python est supporté sur à peu près toutes les plateformes, sans coût supplémentaire. Ses librairies lui permettent de tirer avantage de chaque plateforme (instructions CPU parallèles, GPU), le rendant très efficace malgré sa nature de langage interprété.

Le matériel

Nous avions été habitué depuis quelques années à ne plus nous soucier de la performance de nos machines. Même les ordinateurs portables les plus légers semblaient être assez puissants pour répondre à tous nos besoins, hormis peut-être pour les jeux vidéos.

L'essor de la data science a bouleversé cet équilibre, notamment parce que nous avons énormément de données à traiter. De plus, il est souvent essentiel de pouvoir interagir avec les données avec un minimum de délai. Devoir attendre une semaine pour avoir les résultats d'une simulation nuit vraiment à notre capacité à mener une analyse complexe à son terme.

Une attention particulière est portée, dans la conception de nos outils, à la question de la performance. Il s'agit de s'assurer d'utiliser toutes les technologies à portée de main (instructions CPU spécifiques, GPU, Puces spécialisée) pour accélérer autant que possible les calculs, et donc permettre d'analyser des quantités plus importantes de données. Il convient par conséquent de veiller à utiliser ces outils autant que possible, plutôt que de les redévelopper vous-même. Dans la suite de ce cours, nous verrons un exemple de cela avec la librairie Numpy.

Malgré tout, nous nous confrontons assez vite aux limites de notre matériel, et plusieurs choix s'offrent à nous. Pour simplifier, imaginons que vous venez de réaliser que votre ordinateur portable favori met des jours à entraîner un modèle sur vos données. Vous avez alors le choix entre plusieurs solutions, que nous allons voir plus en détails ici.

Acquérir un ordinateur portable plus puissant

C'est une solution à envisager. Vous êtes familier avec cet environnement, il sera toujours disponible, et vous n'aurez qu'un ordinateur à gérer. Malheureusement, ce choix a des inconvénients. Un ordinateur portable est soumis à des contraintes de puissance et d'énergie. Il est très rare de trouver un ordinateur portable avec des performances comparables à un ordinateur fixe. Et ceux qui le sont sont souvent volumineux et lourd, perdant les avantages de la portabilité. Cela dit, cette solution peut vous convenir si la quantité de données que vous avez à traiter est limitée (c'est à dire que les données tiennent dans la mémoire vive de votre ordinateurs, et que vos algorithmes peuvent tourner assez rapidement sans un GPU puissant).

Acquérir un PC fixe

Vous pouvez décider de vous procurer un PC avec la dernière génération de composants. Le coût est certes considérables, mais souvent pas excessif au regard des enjeux métiers. Le désavantage de cette solution est bien sûr les contraintes physiques. Mais bon nombre d'outils, notamment tout l'éco système Python, peuvent être utilisés à distance. En clair, vous pouvez utiliser votre navigateur pour faire tourner les traitements depuis votre ordinateur portable (ou même, si vous êtes un peu aventurier, votre téléphone) sur un ordinateur puissant.

Les services en ligne

Parfois, les données que vous aurez à gérer seront tellement importantes, et les algorithmes tellement complexes, que vous aurez besoin d'une énorme puissance de calcul. Ou peut-être avez-vous un besoin ponctuel en puissance qui ne justifie pas l'achat et la maintenance d'un serveur. Dans ce cas, vous pouvez faire appel à des outils en ligne. Beaucoup d'entreprise (Amazon AWS, Google Cloud, Microsoft Azure...) proposent désormais de tels services. Ils sont faciles à utiliser et vous permettent d'accéder à une puissance de calcul quasi-infinie, limitée principalement par votre budget. De plus, utiliser ces solutions vous dispense de devoir acheter, configurer, héberger et maintenir votre propre machine.

Et pour ce cours ?

Dans la suite de ce cours, vous allez apprendre à installer Python et ses librairies sur votre machine et/ou sur une machine distante sous Linux, en l'occurence un serveur AWS. Le choix entre les deux vous appartient. Le faire sur votre machine est plus simple à priori, mais le faire sur la machine distante vous sera sûrement utile à l'avenir, et notamment si vous suivez une formation diplômante OpenClassrooms en Data Science demandent la mise en place d'une API.

Pourquoi travailler avec un notebook ?

La Data Science est itérative : il faut souvent tenter plusieurs approches et étudier les résultats avant de décider de la bonne façon de traiter un problème. Les notebooks, que nous allons prendre en main dans ce chapitre, sont parfaitement adaptés à cette particularité. Un notebook est une interface web dans laquelle vous pouvez taper du code Python, l'exécuter et voir directement les résultats, y compris une visualisation à l'aide de graphiques.

Les notebooks supportent aussi les commentaires formatés, ce qui vous permettra d'expliquer ce que vous faites (cela sera très utile, y compris pour vous-même) et commenter les résultats. J'ai par exemple préparé la plus grande partie de ce cours directement sur des notebooks

Sans notebook, vous devez écrire votre programme Python dans un fichier, l'enregistrer, puis le lancer à l'aide de la console avec la ligne de commande  python monfichier.py.

Cependant, travailler de cette manière sera fastidieux. En effet, si votre programme affiche des graphiques (ce que nous ferons beaucoup dans ce cours !), ils s'afficheront soit tous en même temps dans des fenêtres séparées, soit ils s'afficheront les uns après les autres au fur et à mesure que vous fermez les fenêtres graphiques. De plus, il sera difficile de revenir en arrière dans votre programme sans tout relancer depuis le début.

Déjà, il est plus convivial car vous tapez votre code directement dans un navigateur web (type Firefox, Chrome, Safari, Spartan, feu Internet Explorer, etc.). Vous pourrez facilement revenir en arrière en exécutant les lignes de code que vous souhaitez. Enfin, les graphiques s'affichent dans le navigateur, et c'est bien plus pratique ! Vous pouvez essayer le notebook Jupyter ici, ou avoir un aperçu de son utilisation dans les vidéos de ce cours.

Exemple de certificat de réussite
Exemple de certificat de réussite