vendredi 31 juillet 2015

Les classes sous Python - Diapos

Ce support décrit la déclaration, la définition, l’implémentation et l’instanciation des classes sous Python. La présentation est conventionnelle pour que la transposition aux autres langages ne soit pas déroutante. Python en effet intègre des particularités qui sont étonnantes je trouve. Les détailler amènerait des fausses idées qui pourraient être préjudiciables aux étudiants lorsqu’ils étudieront d’autres langages objets. J’ai donc préféré les passer sous silence.

Les mécanismes de classes telles que l’héritage et le polymorphisme sont abordés, que même que les collections d’objets.

Mots clés : langage python, classe, instance, programmation objet, champs, méthodes, héritage, polymorphisme, liste polymorphe, variable de classe
Lien : Les classes sous Python
Fichiers : Exemples illustratifs
Références :
Python - Official Site

mardi 28 juillet 2015

Collection d'objets sous Python - Diapos

Ce support traite des collections d’objets. Python fournit des outils souples et faciles à utiliser. Les tableaux peuvent être de taille fixe ou variable, modifiables ou non, l’accès peut être réalisé avec un indice ou des plages d’indices. L’utilisation des indices négatifs n’est pas commun et semble, à ma connaissance, être spécifique à Python.

Le type dictionnaire permettant de s’affranchir des indices mérite une mention spéciale.

Un aparté à propos des chaînes de caractères qui constituent un cas particulier des listes est également proposé. Des méthodes qui leur sont propres ouvre la porte à des traitements très puissants (ex. recherche, comptage de séquences, etc.).

Mots clés : langage python, tuple, liste, dictionnaire, chaîne de caractères
Lien : Collections d'objets sous Python
Fichiers : Exemples illustratifs
Références :
Python - Official Site

vendredi 24 juillet 2015

Fonctions et modules sous Python - Diapos

Ce support décrit l’élaboration et l’utilisation des fonctions sous Python. Les fonctions sous Python rappellent celles de R, entres autres : les paramètres ne sont pas typés, il est possible de leur attribuer des valeurs par défaut, il est possible de spécifier leur nom lors de l’appel. Le mécanisme des variables globales est un peu particulier en revanche.

Les modules permet d’améliorer la modularité des applications. Leur création et leur usage est réellement facile sous Python. Des modules standards directement utilisables sont disponibles (math, random, etc.).

L'installation et la mise en oeuvre des modules spécialisés (statistique, etc.) seront décrits dans un autre support.

Mots clés : langage python, fonctions, procédures, modules, passage de paramètres, portée des variables
Lien : Programmation modulaire sous Python
Fichiers : Exemples illustratifs
Références :
Python - Official Site

mercredi 22 juillet 2015

Introduction à Python - Diapos

Mon premier contact avec Python date du début des années 2000. Un langage de programmation inconnu - pour moi - m’intéresse toujours. J’avoue que l’intérêt ne m’a pas forcément sauté aux yeux après avoir effectué quelques essais. Un langage objet de plus, interprété de surcroît (et l’interpréteur ne brillait pas par ses performances à cette époque), ne me semblait pas follement enthousiasmant par rapport à l’existant.

Ma curiosité a de nouveau été attisée au milieu des années 2000 lorsque je me suis intéressé au logiciel de data mining Orange. En effet, ce dernier proposait une librairie pour Python, donnant à l’utilisateur de définir des séquences de traitement évoluées permettant de mener des études complètes, en partant de la préparation des données, en passant par la construction de modèles prédictifs et leur évaluation, pour aboutir à leur déploiement.

C’était un moment crucial parce qu’à la même période, je m’interrogeais sur l’opportunité d’enseigner R en tant que langage de programmation - et non pas en tant que simple logiciel de statistique, la nuance mérite d’être soulignée - à l’Université. Finalement, j’avais fait le pari de R. Bien m’en a pris, c’est un cours qui est apprécié, et la page web dédiée est la plus visitée de mon site.

Ces dernières années, j’ai vu Python arriver (revenir) en force, avec deux caractéristiques qui m’interpellent forcément : il est devenu un des langages privilégiés pour l’enseignement de la programmation ; il est très populaire dans le domaine du data science, au point d’être positionné comme un concurrent sérieux pouvant mettre à mal la suprématie de R. Hé ben dis donc, manifestement, il est temps de reconsidérer la question attentivement.

Pourquoi cette percée de Python ? La question est vaste. Pour ma part, j’ai identifié plusieurs aspects qui m’intéressent particulièrement. (1) Il possède toutes les fonctionnalités d’un langage de programmation évolué, et il est pourtant simple à appréhender. Pour préparer mon cours et me familiariser avec le langage, je me suis échiné à refaire tous les TP de mes cours de programmation. Je les ai réalisés en un temps record alors que je ne connaissais pas du tout le langage. Ça ne trompe pas ce genre de choses. (2) Il propose aujourd’hui des bibliothèques de calcul performantes pour le traitement et l’analyse de données, en particulier pour le machine learning. Celui d’Orange que j’avais cité plus haut, mais aussi scikit-learn que je dois absolument tester dans un prochain tutoriel. Et il y en a d’autres. (3) Un élément clé dans le contexte actuel où le big data provoque la frénésie, voire l’hystérie, de tous les acteurs de la société, il permet d’implémenter des applications dans des nouveaux environnements tels que Hadoop (programmation map reduce) ou Spark (en utilisant les API de MLlib). Ouh là là, là aussi je sens que des tutoriels vont venir. (4) Enfin, par rapport à R, il présente l’avantage d’être plus généraliste, plus adapté à un cours générique d’initiation à la programmation. R en revanche me semble plus approprié lorsqu’il s’agit d’approfondir la programmation statistique.

J’ai donc décidé de passer à Python mon cours de programmation en L3 IDS. Ce premier post me donne l’opportunité de partager mes diapos pour la première séance où j’introduis les principales notions du langage, avant de lancer les étudiants sur une série d’exercices sur machine. Les étudiants sont assez hétérogènes, certains ont déjà programmé dans d’autres langages, d’autres ont eu à peine 6 heures d’algorithmie dans les jambes. Je dois schématiser autant que possible, voire simplifier, pour ne laisser personne en chemin.

D’autres diapos suivront, abordant les différents thèmes de la programmation Python.

Mots clés : langage python, types de données, affectation, calculs, structures algorithmiques, branchements conditionnels, boucles
Lien : Introduction à Python
Fichiers : Exemples illustratifs
Références :
Python - Official Site

mardi 14 juillet 2015

Programmation MapReduce sous R - Diapos

Tous les étés, j’essaie de faire le bilan de mes cours et je regarde ceux que je pourrais faire évoluer. Introduire le principe MapReduce dans mon cours de programmation R en Master SISE me titillait depuis un moment déjà. J’avais écrit plusieurs documents à cet effet (qui sont parmi les plus consultés sur ce site d’ailleurs). Mais convertir un tutoriel en cours n’est pas aussi simple qu’on pourrait le penser. Une séance se construit et doit suivre une certaine progression. La pire des configurations qui puisse arriver, c’est l’étudiant les bras ballants devant le PC qui me sort « je ne comprends pas du tout ce qu’on doit faire ». Ouh là là, c’est généralement très mauvais signe ce genre de choses. Un thème supplémentaire veut dire aussi qu’il faudra au mieux tasser les autres chapitres sur les séances restantes. Il faut être prudent, à vouloir tout faire, on ne fait pas grand chose souvent.

Tout cela longuement soupesé, voici les diapos que j’utiliserai pour la 7ème séance de mon cours de programmation R. Il ne me reste plus qu’à élaborer les exercices pratiques qui complètent le créneau horaire. L’idée comme d’habitude est de commencer avec des questions simples avant d’embrayer avec des sujets nettement compliqués qui devraient - sans avoir à le demander explicitement, toute l’astuce est là - emmener les étudiants à les finir en travail personnel.

Mots-clés :  big data, big data analytics, mapreduce, package rmr2, hadoop, rhadoop, logiciel R, langage R
Lien : Programmation MapReduce sous R
Références :
Tutoriel Tanagra, "MapReduce avec R", février 2015.
Tutoriel Tanagra, "Programmation R sous Hadoop", avril 2015.

dimanche 5 juillet 2015

Big Data et Machine Learning...

... Manuel du data scientist

« Big data », « data science » sont des termes dont la popularité est croissante dixit Google Trends. « Machine learning » revient à la mode. Regroupant ces trois appellations, cet ouvrage s’inscrit à l’évidence dans l’air du temps. Son objectif est de clarifier les différentes notions qui gravitent dans la sphère « big data », un domaine que tout le monde identifie comme porteur de perspectives majeures pour les années à venir.

Il se propose de nous guider dans la compréhension des enjeux des projets de data science, en traitant des concepts théoriques (nouvelles approches de stockage des données, méthodes d’apprentissage automatique), et en décrivant les technologies et les outils. Il s’adresse aux décideurs informatiques, aux professionnels du décisionnel et des statistiques, aux architectes informatiques, aux responsables métiers.

Mots clés : big data, data science, data scientist, machine learning, statistical learning
Lien : Résumé
Références :
P. Lemberger, M. Batty, M. Morel, J.L. Rafaëlli, "Big Data et Machine Learning - Manuel du data scientist", Dunod, 2015.