XD blog

blog page


2017-11-11 Hackaton ENSAE : 3ème édition

J'en dirais plus bientôt mais ces deux articles devraient vous mettre sur la voie : Emmaüs se lance dans le e-commerce solidaire, Label-emmaus.co veut être un « Leboncoin solidaire ». Le troisième hackathon de l'ENSAE aura lieu les 24 et 25 novembre. Il proposera trois sujets, un sujet deep learning, un machine learning, un dernier créatif, plus économique que les années précédentes. Trois sujets inspirés des problématiques rencontrées par Label Emmaüs qui a accepté de contribuer à l'événement. Ernst & Young sponsorise à nouveau l'événement, côté étudiants, Genius contribue de nouveau à l'organisation. En attendant les prochaines informations, il faudra vous contenter du résumé des deux précédentes éditions : Hackathon Microsoft / ENSAE / Croix-Rouge / DataForGood - 2015, Hackathon Ernst & Young / ENSAE / Croix-Rouge / Crésus - 2016.

2017-11-09 2 points de QI en moins par rapport à 1990

Ce documentaire Demain tous crétins expose des résultats assez inquiétants. Un enfant sur 68 présente des symptômes autistiques en Californie, d'autres montrent des retard de croissance. La cause est le manque d'iode des femmes enceinte au début de la grossesse, ou plutôt l'augmentation de mollécules que la thyroïde confond avec l'iode comme les PCB, le chlore, les retardeurs de flammes, les pesticides. Une étude menée en Californie menée sur 17 ans, une autre sur les soldats finlandais ont réussi à montrer une baisse inquiétante du QI depuis les années 1990. Bref, il est conseillé de saturer sa thyroïde d'iode. Le sel de guérande est une option à condition qu'il soit chauffé au soleil et de n'ajouter le sel qu'en fin de cuisson. Pour vous protéger : Demain, tous crétins ?, le livre Cocktail toxique, une émission sur France Inter : Demain tous crétins : le danger des perturbateurs endocriniens.

2017-11-05 streaming pandas dataframe

pandas is widely used by data scientists. It is one of the modules which contributed a lot to the Python ecosystem to manipulate data. It is not perfect, a dataset takes in memory three times the space it takes on disk in average and reading a couple of gigabytes is necessarily fast. However, a couple of gigabytes is not enough to think about stronger approaches such parallelization (dask, ...) but with a little bit of overhead for such size. All I wanted was the same functionalities as pandas but implemented in a streaming way. No need to load the whole datasets in memory, no need to wait for the data to be fully loaded in memory. That's why I started pandas_streaming.

import pandas
df = pandas.DataFrame([dict(cf=0, cint=0, cstr="0"),
                       dict(cf=1, cint=1, cstr="1"),
                       dict(cf=3, cint=3, cstr="3")])

from pandas_streaming.df import StreamingDataFrame
sdf = StreamingDataFrame.read_df(df)

for df in sdf:
    # process this chunk of data
    # df is a dataframe
    print(df)

The module will continue to grow probably not as fast as I would like it to.

2017-11-02 Le monde numérique quand on a perdu son mot de passe

Ma mémoire m'a joué des tours à l'étranger. J'ai une mémoire plutôt visuelle, je ne connais pas mon code de carte bleue mais l'enchaînement des touches mémorisés sur la plupart des claviers de distributeurs de cartes bleues ou de machine. A 14h, je règle un dernier achat avec ma carte bleue avant de prendre le train pour la Hollande où je me retrouve dans un taxi à 8h du soir à payer en carte bleue sur un clavier qui me perturbe. Impossible de me souvenir du code. J'essaye deux fois et j'échoue. Plus qu'un essai. Je passe la nuit en essayant de me visualiser en train de taper mon code à Paris. Rien n'y fait. J'ai deux codes en tête et plus qu'un essai. Malheureusement, l'endroit où je dois me rendre est à 8km à pieds de mon hôtel. Je me réveille avec 8 euros en poche et une chance sur deux d'aller en taxi. Ca n'a pas loupé. Je me suis tapé 8 km à pied en 1h30, avec quelques détours, sur les pistes cyclables néerlandaises. A l'accueil de l'hôtel, je demande comment on peut se rendre à pied dans la ville d'à côté. Petit rire de l'hôtesse, ma question est absurde. Je lui demande jusqu'où je peux aller avec 8 euros, elle n'en a aucune idée, elle vient en voiture. Me voilà parti avec mon sac à dos et une heure et demi avant d'arriver faire un speech de 20 minutes devant 400 personnes. Un brin stressant. Le soir, j'appelle le numéro de secours de ma banque pour tenter de débloquer ma carte bleue. Je tombe sur une femme adorable qui m'explique que je peux débloquer ma carte dans un distributeur de la banque, à Paris donc, c'est-à-dire à plus de 400 kilomètres de là où je suis ou je peux demander à ce qu'on me renvoit le code de ma carte chez moi sous cinq jours. Je n'aurais pas eu mon billet de retour, je me serais retrouvé coincé avec le souvenir d'une voix très polie mais absolument d'aucun secours. J'ai même un doute, si ça trouve, ma carte était bloquée à l'étranger quoiqu'il arrive. Ca me rappelle une autre histoire qui m'est arrivé lorsque j''étais à Seattle. A minuit, je reçois un appel de la banque pour me dire qu'elle pense que ma carte a été volée car elle a servi à Seattle. Je dormais, je n'ai pas entendu. Lorsque j'écoute le message, je comprends que j'ai quelques minutes pour confirmer qu'on ne me l'a pas volée sous peine de la voir désactivée. Bref, j'ai fait quinze bornes à pied, j'ai un peu mangé au salon où se tenait ma conférence et je ne sais pas si je vais retrouver ma carte demain. C'est un peu le problème du numérique, un mot de passe perdu et c'est potentiellement tout ce à quoi il donnait accès qui est perdu.


more...

2017-10-27 Entrepreneurs d'intérêt général : l'Etat comme source d'inspiration

J'ai assisté hier soir à la restitution des travaux menés par la première promotion des entrepreneurs d'intérêt général (EIG). La seconde promotion sera plus nombreuse et les candidatures sont encore ouvertes aujourd'hui jusque 17h. Il y a pas mal de sujets sur lesquels j'aimerais bien me pencher.

J'étais déjà enthousiaste sur le projet qui a découché sur la première promotion des EIG et ce qui m'avait incité à accepter la proposition de faire partie du jury qui a sélectionné les candidats. Je le suis tout autant en assistant la présentation des résultats. Cette promotion a tant que possible mis à disposition son travail sur github/eig-2017 et ce travail sera compléter durant les quelques semaines qui suivent. J'y ai découvert quelques outils développés par ces entrepreneurs addok-fr ou encore leaflet-geocoder-ban/demo (source) ou encore matchID, tous orientés vers le partage comme The Magical CSV Merge Machine, l'inventaire des orgues ou encore cette réflexion sur le parcours des données santés. Le rapport Des besoins d’information à la visualisation transcrit l'approche suivie sur un des challenges. Il illustre bien ce que peut être un projet datascience dans une institution qui n'a pas toujours l'habitude de ce type d'approche et porte sur un problème de données que tout le monde peut se représenter : les données de santé.


more...

2017-10-14 Python and javascript

I was doing some research on some other topic but I found this javascript library filbert which parses and converts a Python script into a javascript script. The output is quite verbose but follows the syntactic tree produced by the parser. Transcrypt is less verbose. I then became curious about pyjs which I saw in a conference. It did not get any update in two years so it seems to be discontinued but Brython is still alive and seems a better tool to run python from a javascript page. I also discovered pyduketape which wraps in Python a javascript engine. It is a different approach from the one followed by ghost.py which is relying on PySide.

2017-09-08 Quelques parallèles entre domaines mathématiques

Maudites Abeilles, Matching, Optimal Transport And Statistical Tests, Gaspard Monge, Le mémoire sur les déblais et les remblais

2017-09-05 Retour sur la première séance

Les liens sont probablement une des informations les plus compliquées à prendre en note alors qu'ils sont si faciles à copier/coller. Tout d'abord les liens vers les contenus utilisés pour le cours :

Quelques sites qui proposent des exercices algorithmiques : Les objectifs du cours :

Devinette extraite de la séance... Deux joueurs jouent aux dés. Un joueur a six dés à six faces, l'autre à neuf dés de quatre faces. Le gagnant est celui dont la somme des points sur chaque face est la plus grande. Comment calculer la probabilité de gagner ?

N'hésitez pas à commencer à installer Python sur vos ordinateurs et à les amener en cours si jamais un problème survient : Installer Python.

2017-08-28 Continuous integration

Maintaining notebooks is a lot of work. I consider a notebook is ok if it runs with the latest versions of the packages it uses and if it can be converted into HTML to be included on a website. Easy when you have one notebook but what if you have more than 200 hundred of them to verify for your teachings? I had to automate. I started by running a virtual machine on Azure wich Jenkins and everything I needed. This machine is still up and running and tests everything once in a week for all my python package. But my teachings are also open source so I decided to use continuous integration to test my package on other distributions. I first used travis and appveyor but I could not include the compilation of the notebooks into documentation. It requires a couple of huge dependencies as latex. appveyor is quite slow and stops any job after one hour. travis was using Ubuntu 12.04 when I started and 14.04 now. I recently tried CircleCI 2.0. The design is really nice, it offers Ubuntu 16.04, the configuration file config.yml is much easier to read and to write. One interesting feature is artifacts. The user can easily copy in a specific folder whatever he wants to keep from the build and make it available to download. The other interesting feature is caching. CircleCI automatically caches a docker which contains the dependencies of the package to test. The first run is slow and the following are faster due to this option plus renewing the cache can be easily done by changing a file. So I decided it was worth spending some time enabling CircleCI anywhere. I described here all the steps to create a Python package, with unit tests and documentation and to build it on CircleCI : Tests unitaires, setup et ingéniérie logiciel (French).

2017-08-25 Read paper, read git issues too!

Sometimes I go for a walk at scikit-learn/issues on radio github and I listened to this short news Random Forest Imputation and I discovered this package fancyimpute which is about filling missing values with many fancy ways and then knnimpute and downhill which implements a couple of gradient descent algorithms with theano. A little bit later: Thompson sampling with the online bootstrap.

2017-08-24 Remove big files from git history

Git repositories always get bigger. I noticed than one of GitHub repository was above 500Mb. I was wondering how I could make that size smaller. First, let see the size.

git count-objects -v 
count: 0
size: 0
in-pack: 19644
packs: 1
size-pack: 222397
prune-packable: 0
garbage: 0
size-garbage: 0

The size is size-pack. To clean, the first option is to rebase the repository so basically to clean everything and to commit the current state of the content. One solution is to keep only the latest commits (see Reduce repository size).

git log -n N
git reset --hard HEAD~N
git push --force 

more...

2017-08-17 L'inflation numérique

Chaque année, je reçois beaucoup de projets informatiques réalisés par des étudiants, plus d'une centaine l'année qui vient de se terminer. Je garde les projets principalement parce que des étudiants me demandent des lettres de recommandation. Chaque année cela grossit.

2017-08-03 PyData Seattle

Les vidéos des talks à PyData Seatle sont disponibles : PyData Seattle 2017. Quelques-unes à regarder pour les novices en Python :

La datatascience, finalement, on passe son temps à chercher le bon graphe, celui qui nous montrera ce qu'il fallait voir dans ces données ou alors on cherche l'outils qui nous permettra de trouver le bon angle : Jeffrey Heer - Interactive Data Analysis: Visualization and Beyond. Pour les experts : Chris Fregly - High Performance Distributed Tensorflow, Jeff Fischer - Python and IoT: From Chips and Bits to Data Science, Stephen Hoover - Scaling Scikit Learn.

Pour les utilisateurs de Spark, cette vidéo pourrait vous intéresser : Raj Singh - PixieDust make Jupyter Notebooks with Apache Spark Faster, Flexible, and Easier to use (voir aussi PixieDust).

Si vous avez un vieux système à mettre à jour, Matt Braymer-Hayes, Erin Haswell - Upgrading Legacy Projects: Lessons Learned.

2017-08-01 La panne du 1er août

Je fais partie comme de nombreux voyageurs des personnes impactées par la panne qui empêche la SNCF de faire circuler ses trains au départ ou à destinations de la gare Montparnasse. Le message que j'ai reçu est assez simple et sans appel : Nous vous informons qu'en raison d'une panne de signalisation, votre train ne circulera pas. Nous vous invitons, dans la mesure du possible, à reporter votre voyage. J'ai donc pris un autre billet pour le même jour en espérant que le site web ne m'ait pas laissé acheter un billet non valide. La panne arrive à tout le monde et je ne voudrais pas blâmer une entreprise publique qui pour ma part satisfait mes besoins. Néanmoins, j'aurais apprécié que le mail me proposât quelques options de remplacement. Je suis très heureux d'apprendre que cinquante techniciens inspectent le poste de commandemant de Vanves-Malakoff (d'après LeMonde) mais je ne sais combien travaillent sur les itinéraires de remplacement.


more...

2017-07-24 Pollution et emplois

La papèterie de Mimizan rejette quelques résidus de bois sans vraiment dire exactement combien. Voici le petit billet que j'avais écrit l'année dernière : Ouvrir les données. Cette année, il m'est arrivé de retourner sur la plage plutôt que d'aller me baigner car ce que je prenais pour les résidus d'un petit dégazage étaient probablement ceux de la papèterie locale.

Même si ce n'était qu'une sorte de farine d'écorce de bois, le premier réflexe de tout baigneur est de s'en écarter. C'est la petite pustule à supporter pour garder la papèterie dans la région. L'argument est toujours d'ordre économique et se présente presque toujours sous la forme d'un chantage : pollution mais emplois, pollution mais vacances pas trop chères. Le choix est le même depuis des années sans que nous puissions décider en tant que citoyens s'il n'existe pas d'alternatives à ce choix imposé.


-->

Xavier Dupré