XD blog

blog page

python


2019-10-05 Quelques essais de benchmarks

J'ai découvert ou plutôt on m'a fait découvrir le benchmark officiel de scikit-learn scikit-learn_benchmarks que je fais tourner dans une version augmentée scikit-learn_benchmarks + ONNX. Il a quelques sautes d'humeur car je fais tourner plein de choses sur la même machine. Ils ont d'ailleurs tous quelques sautes d'humeur.

Ensuite, je me suis amusé à créer un benchmark automatique pour tous les modèles de scikit-learn toujours en utilisant le module asv. Puis un autre... Bref, tout est là Benchmarks.

2019-09-27 Petit plaisir de professeur

C'est un petit plaisir de professeur : arriver en cours et exposer ce qu'on sait déjà mais sans vraiment l'avoir vérifié de ses propres mains : la régression Lasso permet de sélectionner les variables. Et puis finalement, le jour où je le dis, je ne suis pas plus convaincu que les étudiants en face de moi. Pourquoi ça marche avec cette norme et pas la norme L2 ? Bref, devant le silence d'un cours 20 minutes avant la pause déjeuner, après 2h30 de cours magistral, je me suis pris d'envie de calculer un gradient. Et là, en voyant la formule, l'intuition, je comprends qu'il y a une impossibilité car le gradient ne s'annule pas autour d'un point en particulier contrairement à la régression L2. En gros, si le gradient est mal foutu, il ne peut pas exister de solution autour. J'ai eu un peu de mal à partager cette intuition et j'ai laissé les étudiants avec un début de phrase pas faux mais pas suffisamment complet pour être tout-à-fait vrai. Je me suis dit qu'il fallait compléter la preuve : Normalisation des coefficients. La preuve n'est pas valable dans tous les cas mais l'idée suffit juste d'être poussée un peu plus loin. L'idée est développée un peu plus dans Regularization and Penalized Regression (Arthur Charpentier).

2019-06-27 Documentation needs work

A bug. One more. I read the documentation of the fonction. It hardly describes what it does. This long paragraph is probably clear for its author but still kind of obscur to me. When i understand it, it tells me that what i wrote is partially wrong but i wrote so many lines that I'm puzzled about which is wrong and which is right. So what... i go on github to see where this exception may have been raised and then i realize this information i need is not there unless i expand the error message with what i need. But then i'll to recompile and that cost 30 minutes on my poor ugly laptop. So what... I skip it unable to convince myself to freeze my machine for that much of time and drink coffee for half an hour which is much more than the small quantity that would keep me awake for ever. So i tried poking with parameter almost randomly - what i kindly oppose when my students do it - to find out the combination which works out of the many combinations Hermione - I'm pretty sure - would have been happy to solve. And finally when i find, all seem logical in a way i kindly disagree with all the non informative error messages i got all along doing it...

I need to be drunk before this fully uninteresting task gets up to my brain, before this part of my body realizes whatever i do practice is always what I need not to feel the pain of struggling against such nonsense, before it realizes that coding is one among the few kinds of shared art, something people may do with other people just because they never get somebody to tell them it was so beautiful that it deserves to be hanged on their wall.

Whatever, I'm still at that bug, skipping the documentation which does not make sense to me tonight and directly going to what causes my picasso face, a kind of disorganized puzzled face. Anyway, I'm in the CODE, the open source code and I feel happier just because the code is precise and is not outdated. Writing documentation reminds me the summary exercise I did in the preparatory school to Grandes Ecoles. A good documentation takes time. Otherwise, a link to the code is just what i need.

2019-06-25 V

J'ai lu l'article car le langage V m'évoquait la vieille série américaine V. De là à penser que ce langage allait contaminer tous les autres, il a l'air suffisamment rapide à la compilation pour rendre obsolète les langages interpréter tels que Python. Le nombre de contributeurs est encore assez réduit mais c'est comme une oeuvre d'art. Le partie C est ici v.c.

2019-04-18 Jupyter, Spyder, ... and pyodide

It seems to be a good replacement for jupyter or spyder if you need to build complex animation. The logic is close to javascript and it does not suffer from a necessary complex bridge between python and javascript : pyodide. Why not...

2019-04-10 Are you able to solve a linear regression without computing a matrix inverse?

A linear regression is a solved problem: it finds B which minimizes the problem |y - (A + XB)|. The solution is known: B = (X'X)^(-1) X' y (see Ordinary least squares). Can we compute the solution without any matrix inverse, only with matrix products and additions? My solution is somewhere on my github account...


more...

2019-04-01 Determines close leaves in a decision tree

That's a problem I had in mind yesterday. When scikit-learn builds a decision tree, we might want to say which classes share a border with another one, which I translated by which couples of leaves of a decision tree share a border. The final node determines which feature to use to split between two leaves and two classes. What can we say about two leaves far away in the tree structure? Do they share a border? We could use the training data to build a kind of Voronoï diagram for points and group cells which belong to the same leave. What if we do not have the training data?

My answer is implemented somewhere on my website. This question was something I was looking into to imagine a way to build a continuous piecewise linear regression with at least two features... which is impossible but still finding close leaves seemed a good algorithmic problem.

2019-03-24 Ecran blanc pour les notebooks, panique à bord

J'ai passé la nuit à coder un truc et que je lorsque je veux montrer que le code est plus rapide, j'ouvre un server de notebook pour me retrouver avec un écran blanc. Mon premier réflexe est d'essayer pas mal de navigateur pour avoir toujours le même résultat. Un écran blanc. Merde, merde, merde ! Le bug pour lequel vous n'aimez pas la programmation. Mon premier réflexe fut de réinstaller mon python en intégralité, comme sur windows, quand ça merde, on reboote.

Evidemment, après une heure d'installation, toujours la même chose. Il faut deviner le package qui ne tourne pas rond. Quelques recherches plus loin, je tombe sur cette issue while launching jupyter notebook ou celle-ci Jupyter Notebook - Blank Screen - after pip install jupyter. C'est le genre de problème qui n'apparaissait que sous Windows, allez savoir pourquoi. Bref, la solution proposée par le premier a marché. L'erreur survient quand on installe le module notebook>=5.7.6.

J'ai réinstallé mon python pour rien. Merde.

2019-03-10 Open Source

First time in my life when whatever I do is open source and on GitHub. I remember when I left my first company, it was quite annoying to leave everything I contributed to behind me and not being able to look what it became from time to time. It is like coming back to your hometown, it is a place you know very well and quite hard to leave for ever.

I made a page for all the open source projects I work on. Most of them are my own, a couple of them contains the teaching I do, some others automate the publishing of the first one, some help me during my daily life, the last ones are Microsoft's one.

2019-02-28 Sprint scikit-learn

J'ai vécu mon premier sprint scikit-learn. J'avais posté au préalable une issue Faster PolynomialFeatures à laquelle j'ai proposé une solution Fixes #13173, implements faster polynomial features for dense matrices. Je recommande l'aventure à tous ceux qui souhaitent comprendre comment on construit une librairie de machine learning qui plaise au plus grande nombre. J'y ai croisé des chercheurs venus de tous horizons, des contributeurs de scikit-learn, venus pour réfléchir sur les prochains grands défis de la librairie que je résumérais par : Comment répondre à de nouveaux usages tout en conservant la simplicité du design actuel ?.


more...

2018-12-19 Hackathon ENSAE 2018

La vidéo du hackathon est disponible. Vous pourrez aussi voir en chiffres la fin haletente pour les deux challenges : nombre de soumissions par heure et aussi le récit heure par heure du hackathon vu par un mentor Nuit intense au hackathon.

2018-12-17 La COP 24, berceau des illusions

Greta Thunberg proteste à sa façon en refusant d'aller à l'école chaque vendredi pour protester contre l'inaction des gouvernements face au réchauffement climatique. Dans son discours lors de la COP 24, elle parle de justice climatique, elle dit aussi que si nous avons tant de fois échoué à réparer un système, c'est peut-être qu'il faut en changer.


more...

2018-12-15 La loi et le politique impatient

L'article induit quelque peu en erreur car le titre est comme d'habitude rédigé de façon à accrocher le lecteur tout en l'induisant dans l'erreur si jamais s'il s'arrêtait là : Le plafonnement des indemnités prud’homales jugé contraire au droit international. En substance, l'article aborde un cas où le jury prud'homal a donné raison à l'employé et a accordé des indemnités hors du plafond proposé par la loi. La loi plafonne les indemnités, l'employeur sait à l'avance ce qu'il va payer et cela peut être interprété comme si le jugement était connu à l'avance, ce qui est contraire à ce qu'on entend par Etat de droit. Le plafonnement des indemnités prud'homales n'est pas explicitement contraire à la loi mais pas tout à fait conforme à l'esprit de la loi. Voilà ce que j'ai retenu de cet article.


more...

2018-12-12 Les impôts payés en avance

Je suppose que beaucoup d'enseignants vacataires ont reçu un message des impôts comme celui que je recopie ci-dessous leur annonçant que les impôts seront prélevés dès le mois de janvier sur la base des revenus 2017 et corrigé en Septembre 2019 car le revenu 2018 ne sera connu qu'à cette date. Il est dit que le paiement à la source apporte beaucoup de souplesse... Je pense à tous les efforts pour mettre en place l'impôt à la source que l'Etat aurait pu utiliser pour réduire ce délai de 9 mois entre le début de l'année et la connaissance de mon revenu de 2018. Bref, si seulement on avait investi ces efforts dans la lutte contre la fraude plutôt que d'aller réformer une collecte qui marchait bien...


more...

2018-12-05 onnxruntime is open source

onnxruntime is meant to deploy machine learned models once they are converted to ONNX format. I did a presentation about it at PyParis and MSExperience. I went open source last night as expected. It aims at computing the prediction of many machine learned models or pipelines built with many machine learning frameworks. It does not take a dependency on the framework which produces the model, the runtime is optimized for CPU, GPU. I'm now working on a couple of projects, all open source, all on github. Interesting times.


-->

Xavier Dupré