mardi 21 février 2017

Python : Manipulations des données avec Pandas

La manipulation des données est la base de l’activité du data scientist. Si on ne sait pas charger un fichier, exécuter des restrictions et des projections, réaliser des transformations, croiser les variables, représenter les données à l’aide de graphiques simples, la suite des opérations se révèlera très difficile. Quel que soit notre niveau de connaissances sur les techniques de machine learning, nous serions un peu comme une poule qui a trouvé un couteau : nous savons ce qu’il faut faire, mais nous ne savons pas comment faire. C’est ballot comme dirait toto.

Ainsi, dans tous mes enseignements de statistique et de data mining face à un public non statisticien ou data miner (peu au fait des logiciels de data mining), je consacre systématiquement au moins un TD (travaux dirigés) à des exercices de manipulation de données : charger un fichier, réaliser des filtrages, des tris, des recherches, etc. Mes outils privilégiés jusqu’à présent étaient Excel et R. Face à la demande croissante des étudiants, j’ai décidé d’écrire un support décrivant les manipulations basiques des ensembles de données (dataset) sous Python. C’est aussi et surtout l’occasion de faire découvrir la magnifique librairie Pandas, puissante et foisonnante. Un peu trop peut-être. J’ai passé un temps monumental à l’explorer dans tous les sens. Je ne suis pourtant pas sûr d’en avoir mesuré toutes les subtilités à ce jour. Je peux comprendre qu’un néophyte se décourage rapidement face à la documentation en ligne qui est particulièrement touffue. C’est la raison pour laquelle j’ai écrit un support assez basique, schématisant les opérations les plus fréquemment réalisées, au moins pour une première mise en bouche.

Enfin, ce support a été l’occasion d’écrire un document à l’aide du notebook Jupyter. Je le connaissais depuis longtemps. Je n’ai pas été convaincu par le rendu jusqu’à présent. Mais le fait est que j’écrirai de plus en plus de tutoriels pour Python à l’avenir. Je dois explorer cette piste qui me permettrait de réduire le temps de rédaction, exploitable pour R aussi d’ailleurs. Il faut simplement que j’aie une plus grande maîtrise de l’organisation et de la mise en forme du PDF final.

Mots clés : pandas, python, manipulation des données, filtres, tableaux croisés, DataFrame, data.frame, Series, graphiques, matplotlib
Document : Manipulation des données avec Pandas
Données : Données et notebook Jupyter
Références :
Python Data Analysis Library, pandas.
Tutoriel Tanagra, "Manipulation des données avec R", août 2012.

jeudi 2 février 2017

Filtrage collaboratif et recommandations - Diapos

Le filtrage collaboratif regroupe l’ensemble des méthodes qui visent à construire des systèmes de recommandation utilisant les opinions, les évaluations et le comportement d’un groupe d’individus (Wikipédia). La vente en ligne – entres autres, on peut penser aussi aux suggestions sur les plateformes de partage de vidéos, etc. – rend ces systèmes indispensables. Nous ne disposons plus d’un vendeur qui va essayer de comprendre nos attentes pour nous aiguiller vers les bons achats (bien que l’on voie maintenant apparaître des guides qui essaient de nous prendre en main sur les sites). Et, d’un autre côté, un expert ne peut pas édicter tous les règles de gestion qui permettrait d’avancer des propositions efficaces sur un site. S’appuyer sur l’expérience commune se révèle être une stratégie féconde.

Dans ce support, nous dessinons les tenants et aboutissants du domaine. Nous explicitons la démarche en détaillant concrètement deux approches, l’une centrée utilisateur (ex. client), l’autre centrée item (ex. produit). Nous constatons que des méthodes relativement simples permettent de répondre à un cahier des charges exigeant.

Mots clés : web mining, collaborative filtering, recommendation system, système de recommandation
Document : Filtrage collaboratif et système de recommandation
Références :
Ekstrand M.D., Riedl J.T., Konstan J.A., « Collaborative Filtering Recommender Systems », in Foundations and Trends in Human-Computer Interaction, vol. 4, n°2, p. 81-173, 2011.