XD blog

blog page

r


2016-06-10 Lectures et algorithmes un vendredi

Je commencerai par le plus facile : Dans la vallée de la Bièvre, la crue et les inondations ont été contenues. En bref, 18 km de rivière sont régulées par des vannes commandées par un algorithme. Et cela a fonctionné.

Côté programmation, TensorFlow commence à faire des petits. En voici un : tflearn qui propose une API Python différente pour les fonctionnalités de TensorFlow. De fil en aiguille, on remonte jusqu'au compte GitHub de l'auteur pour tomber sur des exemples avec TensorFlow et un autre site Machine Learning & Deep Learning Tutorials. C'est sans doute un peu moins poli que celui-ci Free Kaggle Machine Learning Tutorial for Python. Ensuite, CVXPY est un module qui permet de faire de l'optimisation convexe avec ou sans contrainte. Pour fermer cette parenthèse, je vous suggère de retourner sur Kaggle avec le script de la semaine May 2016: Scripts of the Week, February 2016: Scripts of the Week.

Pour finir, quelques articles très récents. Le premier pour comprendre comment fonctionnent les enchères sur internet Learning Algorithms for Second-Price Auctions with Reserve. Le second pour avoir envie de faire autre chose que de la sélection de variables : Structure-Leveraged Methods in Breast Cancer Risk Prediction. Le troisième parce que j'ai toujours eu envie d'étudier les sessions des utilisateurs d'un moteur de recherche d'une façon différente : A Gibbs Sampler for Learning DAGs. DAG veut dire directed acyclic graph. Le quatrième parce que je suis curieux : Consistent Distribution-Free K -Sample and Independence Tests for Univariate Random Variables. Le cinquième pour le titre : Learning Using Anti-Training with Sacrificial Data". Enfin, dans les sujets en vogue, l'apprentissage par renforcement : Thompson sampling et An Information-Theoretic Analysis of Thompson Sampling.

2016-06-09 Old R or Young Python?

Python was conceived in 1990 (source Wikidepia). Not so young maybe compare to R which is in fact younger but inspired from a much older language S born around 1975. Why bringing back this question when every data scientist knows both, when universities teach both? Difficult to say which one is best according to R and python usages. According to Top Data Scientists to Follow & Best Data Science Tutorials on GitHub, Python seems to be more popular among the top data scientist on GitHub. But is there any competition? Choosing R or Python for data analysis? An infographic

So...

Every data scientist is using both language but all of them are using mostly one. Then a former student told me that little story. His company was using R as a preferred language but as new hires joined, Python became more and more popular. I was thinking maybe we should compare the average age of people mostly using one or the other.

2015-08-02 Which version of R to install for bigmemory?

While trying to install a package for R on Windows, I realized not all of them are available for the latest version. The package bigmemory does not seem to exist on Windows (click on the link). However after a couple of web searches, you can find that the instruction might work:

install.packages("bigmemory", repos="http://R-Forge.R-project.org")

But it does not work on the latest version, only R-3.1. That's what this page indicates: R Development Page (click on this link).

2014-09-07 Four issues I had when using IPython, R and rmagic

I wanted to use R through IPython notebook to mix Python and R. I did it on Windows and I guess it requires to be more careful. I went through four issues.


more...

2014-04-02 References for Statistics with R

Python does not offer all the functionalities in one module, you need to look for them sometimes. In my case, I was looking for a statistical test on coefficients obtained with a linear regression. The module I was looking for is statmodels. While looking for that, I found this interesting blog Glowing Python. But I finally decided to switch to R where I know for sure I would find what I need. And because I'm not fluent in R, I need something like that : StatMethods.

2014-02-24 Travailler avec IPython notebook

Si l'environnement que R proposait était il y a encore quelques temps le meilleur compromis pour quiconque voulait faire des statistiques ou du machine learning, de mon point de vue, IPython a changé la donne. On peut toujours travailler avec un éditeur texte classique, ou avec une ligne de commande similaire à celle de R ou encore utiliser les notebook. Un notebook, c'est un peu comme une page blanche ou on mélange à la fois du texte, du code, des graphiques, des équations et même du javascript. C'est très pratique lorsqu'on cherche sa partition. Entendez par là que vous avez un problème à résoudre mais pas encore la solution. Il faut donc expérimenter. Cette page blanche vous permet facilement de garder une trace de tous vos essais et de les annoter puis de rédiger le document final. Pour vous en convaincre, il suffit d'aller voir la gallerie suivante (également A gallery of interesting IPython Notebooks), et on peut faire des choses assez marrantes (XKCDify) voire même utiliser R depuis IPython (Using R Within the IPython Notebook).

Pour essayer, l'option la plus rapide et de télécharger la distribution WinPython qui contient tous les packages intéressants pour un statisticien (ou data scientist). Il ne vous faudra pas très longtemps pour lancer le notebook et de là, découvrir par vous-même comment cela fonctionne. Il n'y a pas trente six mille boutons et tout est plutôt intuitif.


more...

2014-01-12 R or Python

Should you use R or Python? I won't give a precise answer except a reference to this blog post: Python Displacing R As The Programming Language For Data Science. To summarize, if you are a statistician, you are already using R. However, if you are not a statistician but you need statistics, you are probably wondering if you should use R and another language or just another language. R is not very well designed as a programming language and is not very suitable to manipulate files, create a web server or games... Using Python for everything avoids switching to another language. It avoids converting the data into various formats between the two languages.

With pandas, numpy, scipy, scikit-learn, matplotlib, IPython, many common statistics routines are available in Python. In the last two years, it became a really strong alternative to R. In the next years, SAS should less and less used (see Forecast Update: Will 2014 be the Beginning of the End for SAS and SPSS?). Computers speed and memory are not an issue anymore with others alternatives. Plus, it is expensive. I would also look at Julia (+ Julia Studio) which seems to be a promising language. I discovered at MCMSki IV. But maybe the future will be dedicated languages such as BUGS for bayesian models.

Finally, some articles about R and Python:

2014/06/30: I recommend reading Numeric matrix manipulation, The cheat sheet for MATLAB, Python NumPy, R, and Julia

2013-11-30 More about interactive graphs using Python, d3.js, R, shiny, IPython, vincent, d3py, python-nvd3

I recently found this url The Big List of D3.js Examples. As d3.js is getting popular - their website is pretty nice -, I was curious if I could easily use it through Python. After a couple of searches (many in fact), I discovered vincent and some others. It ended up doing a quick review. Every script was tested with Python 3.

Contents:

If you want to easily produce a html file including javascript (to publish it on your website for example), you only need to look at sections Graphs with Python and d3py, Graphs with IPython and nvd3. I tested the solution introduced below. If you need some guidelines to choose which one suits your needs, I would recommend asking the two following question:

Before going on, if you speak French and if you do not know much about d3.js, you can watch this presentation Visualisation de données pour le web avec D3.js which introduces the concepts of this library.


Use of IPython (qt)console

The QtConsole looks like a command line window but is able to display images inline using matplotlib:


more...

2013-08-01 Datamining avec R ou Python

Il est devenu assez facile de travailler avec R. Même si je trouve toujours le langage compliqué, il faut avouer que des outils comme RStudio rendent l'outil indispensable et de moins en moins difficile d'accès. On peut importer ses données depuis une grande variété de format, créer des rapports en utilisant knitr ou encore créer une application web avec shiny. Il existe un package pour presque tout comme pour faire des tests unitaires avec RUnit.

J'ai pour habitude de faire le plus de choses possibles en Python, de passer au C++ quand c'est vraiment nécessaire et d'utiliser R pour tout ce qui statistiques. R a l'avantage d'avoir une modèle suivi par tous les packages alors que les modules Python suivent leur propre logique le plus souvent.

Un exemple sur les méthodes à noyau : sous R, il faudrait utiliser le package kernlab, sous Python, on se dirigerait vers scikit-learn. Les packages sous Python sont souvent plus gros car les auteurs auront voulu intégrer de nombreux algorithmes selon la même logique. Sous R, chaque package a un périmètre plus réduit et suit les mêmes conventions. Comme Python s'interface avec à peu près tout y compris R, je préfère ce langage dont la syntaxe me paraît plus facile même si je n'hésite pas à repasser à R dès qu'il le faut.

C++

Les deux langages permettent d'inclure des morceau de C++ si nécessaire. Python dispose de diverses façons~: Cython, Boost.Python, ou cffi. Avec R, il y a Rcpp (tutoriel sur Rcpp, il faut aussi installer devtools). Est-ce que le langage C va disparaître ? Pour le moment, si les langages de scripts sont beaucoup plus utilisés, les compilateurs sont la plupart du temps écrits en C++. De nombreuses extensions ont été écrites en C++ (voir Eigen par exemple). Ce langage est souvent un choix raisonnable lorsqu'on veut écrire du code très rapide.

Graphiques

L'outil qui prend un peu plus d'importance ces temps-ci est d3.js car il permet de réaliser des graphiques facilement intégrables sur un site web, un journal en ligne, qu'il permet de faire plus facilement des animations et surtout, comme il est écrit en javascript, il permet de créer des graphes qui réagissent à la souris ou au clavier. Je n'arrive pas encore à trouver un module qui le rende facilement utilisable depuis Python. L'article Method: Data visualization with D3.js and python - part 1 décrit comment s'y prendre sans toutefois citer de module dédié à cet usage. Ca ne devrait pas tarder. Sous R, sans être javascript, il existe ggplot2 qui propose des graphes assez jolis.

Big Data

Enfin, dans le domaine des Big Data, les solutions lourdes type Map/Reduce Hadoop sont de plus en plus fréquentes lorsqu'on traite des données qui arrivent en continu (internet, téléphone, consommation d'énergie...). Pour le reste, un ordinateur portable avec quelques giga octets de mémoire et un disque dur conséquent suffit. Des outils existent pour ne pas avoir à charger une base complète en mémoire. C'est le cas de ff et ffbase (ou ça bigvis) sous R. Sous Python, l'environnement de travail le plus approprié est IPython. Pour manipuler les données, on trouve pandas ou PyTables.

2013-03-30 Python, R, MOOC, Big Data, quelques références

A chaque fois qu'on change de distribution Python, il faut réinstaller les modules dont on se sert et aussi ceux dont on se sert parfois et dont on découvre qu'ils ne sont pas toujours maintenus à jour. Le module Rpy2 permet de lancer des scripts R depuis l'interpréteur Python. Il permet également d'accéder à certains objets puisque l'espace de travail reste ouvert et garde la mémoire de ce qui a été fait. J'essaye de l'installer, ce que je n'ai pas encore réussi à faire avec la version 3 de Python, et ce faisant, je suis tombé sur le module RPython qui permet de faire exactement l'inverse, c'est-à-dire d'exécuter du code Python depuis R.

Je suis beaucoup plus à l'aise avec Python dès qu'il s'agit de faire les choses les plus ennuyeuses (charger des données, réarranger des colonnes, filtrer, appliquer des modifications textuelles...), je vais probablement l'essayer. Mais cela montre que le langage Python est plutôt populaire. La même chose existe avec Excel : le module pyxll permet d'écrire des macros en Python de façon plutôt simple. L'idée est plutôt séduisante, il est plus facile de maintenir un code Python plutôt que de VBA.

L'apprentissage de l'informatique se démocratique en ce sens qu'il devient de plus en plus facile de trouver des cours gratuits et de très bonne qualité. Le site du zéro propose également de nombreux tutoriels sur la plupart des langages informatiques courants. En langue anglaise, il y a code school ou Khan Academy qui dispose de nombreuses vidéos à propos de sujets allant de la programmation à computer science même si dans ce domaine le must est Coursera. L'école Polytechnique a décidé d'y participer : EP. edX est une autre plateforme choisie par Harvard, le MIT. Ces plateformes sont appelées MOOC, le blog suivant un MOOC c'est quoi au juste sera plus disert que moi sur le sujet. Le dernier cité est Udacity. Le premier (Coursera) est probablement le plus riche, on y trouve également des cours d'improvisation musicale.

Chose amusante, peu de cours apparaissent lorsqu'on en cherche un à propos de Big Data. Sans doute cette présentation Big Data, Sorry What Does a Data Scientist Do en donnera quelques raisons (j'ai trouvé cela depuis le blog Freakonometrics).


Xavier Dupré