XD blog

blog page


2016-03-03 Puzzle, Rubik's, Gaming

Here are a few link on the Rubik's cube. It started with an article on French MOOCs: French MOOC: Résoudre un Rubik’s cube grâce aux mathématiques. And I followed some links:

Lectures about how to program in Python, how to create a game: Program Arcade Games With Python And Pygame.

2016-02-28 Python 2.7 and Python 3, difference with multiple inheritance

There is a little difference in the way Python 3 and Python 2.7 handles multiple inheritance. Class Cl inherits from ClA and ClB. ClA defines method1, ClB defines suffix. The question is: Does method method1 from class ClA know about method suffix from class ClB? In Python 3, it does:

class C0:
    def suffix(self):
        raise NotImplementedError()

class ClA(C0):
    def method1(self):
        return "A.method1" + self.suffix()
        
class ClB(C0):
    def suffix(self):
        return "--B"
        
class Cl(ClA, ClB):
    pass

cl = Cl()
print(cl.method1())

[1]

A.method1--B

In Python 2.7?


more...

2016-02-26 Don't mix return and yield

When a function uses the keyword yield, it becomes a generator. A second function can accept this generator and produce another one as follows.

def generator(seq):
    for v in range(0,3):
        yield v+1
        
def generator2(gen):
    for r in gen:
        yield r

for v in generator2(generator(3)):
    print(v)

[1]

1
2
3

This is not the only way to write this function. Python 3.5 has introduction keyword yield from.


more...

2016-02-21 scikit-learn, dask and map reduce and examples on Python about machine learning

This is blog post about a couple of topics. The first one is about parallelizing a scikit-learn pipeline with dask. Pipelines and Reuse with dask. A little bit more and dask Introducing Dask Distributed. The module distributed distribute work on a local machine with syntax very close to map/reduce syntax. An example taken from the documentation:

def square(x): return x ** 2
def neg(x): return -x

from distributed import Executor
executor = Executor('127.0.0.1:8786')

A = executor.map(square, range(10))
B = executor.map(neg, A)
total = executor.submit(sum, B)
total.result()

I was being asked where to find examples, scripts about machine learning. Most of them happen to be written within a notebook such as the one posted on Kaggle: Python script posted on kaggle or examples from this blog: Yhat blog. Other examples can be found at ENSAE / Bibliography / Python for a Data Scientist. If you are looking for more examples of code, pick one kaggle competition and look for it on a search engine after adding the word "github", you may be able to find interesting projects. Just try kaggle github to begin with.

2016-02-05 Yann Le Cun au collège de France

Yann Le Cun au collège de France. Pour ceux qui découvrent : La leçon d’un maître de l'intelligence artificielle au Collège de France ou sur France Culture Le "Deep Learning", ou l'apprentissage profond des machines.

2016-02-03 Cancer, pesticides, Epidemium

A en croire l'émission Cash Investigation, la France est inondée de pesticides et beaucoup sont cancérigènes. Un article est même paru dans Le monde le lendemain : Pesticides : des substances toxiques, invisibles et omniprésentes. L'émission commence par la construction d'une carte qui recense les pesticides épandus sur le territoire français. Ces données sont a priori très difficiles à obtenir. Il seraient sans doute intéressant de les ajouter dans une version non agrégée aux jeux de données proposés par le challenge Epidemium. Les données que l'émission a regroupé semblent autrement plus détaillées que celles disponibles où la valeur Non renseigné semble assez fréquente.

Aujourd'hui, j'ai regardé les bouteilles de vin de façon différente. Au rayon bordeaux, la région la plus arrosée, j'ai cherché les vins bio.

2016-02-02 Leicester en tête du championnat grâce au Big Data

D'après l'article Football : il était une fois Leicester City..., le manager de Leicester a utilisé des statistiques pour recruter des joueurs méconnus mais prometteurs. Pour citer l'article : Selon lui, 200 000 euros d'investissement dans les algorithmes sont l'équivalent d'un budget de 10 millions d'euros en achat de joueurs. Leicester est premier du championnat aujourd'hui avec le meilleur buteur.

2016-01-19 Les statistiques ne sont pas des preuves

Lorsqu'on lit l'article Tennis : soupçons de matchs truqués parmi l’élite mondiale, on ne soupçonne pas que cela est parti d'une étude statistique et que le point de départ ressemble à beaucoup d'article de blogs comme celui-ci Exploring U.S. Traffic Fatality Data qui utilise les statistiques pour explorer les données. Le point de départ décrit dans l'article Comment Buzzfeed et la BBC ont analysé 26 000 matchs de tennis est en fait une étude statistique Betting worth billions. Elite players. Violent threats. Covert messages with Sicilian gamblers. And suspicious matches at Wimbledon. Leaked files expose match-fixing evidence that tennis authorities have kept secret for years. dont le code est disponible sur GitHub Methodology and Code: Detecting Match-Fixing Patterns In Tennis.

Cette histoire est à rapprocher de celle Affaire des paris suspects (handball). Au départ, il y a une constatation statistique, à l'arrivée, une enquête qui repose sur des faits. Une enquête suivra-t-elle cette nouvelle découverte statistique ? Difficile à dire.

2016-01-15 Un jeu pour recruter

J'ai découvert Marbles and brain à Seattle et je suis tombé sur le jeu Logic Dots qui propose des énigmes un peu à la démineur ou comme l'énigme de Hermionne dans le premier tome de Harry Potter. Et pourquoi ne pas s'en servir lors des entretiens d'embauche plutôt que les sempiternelles énigmes mathématiques ?

Et pour apprendre à programmer, Sphero, ça a l'air plutôt cool si on a un iPhone.

2016-01-11 Un film difficile à trouver

Je ne pensais qu'un film pourrait échapper aux moteurs de recherche. Guddo sutoraipusu de Yukiko Sode ou Good Stripes an anglais. Après plusieurs recherches, je n'avais toujours pas réussi à trouver son titre français et je supposais que c'était la raison de son absence.

Je vais rarement au cinéma. J'évite de préférence les gros films américains dont les budgets colossaux requièrent des entreprises sans risques et sans surprises pour des histoires menées tambour battant pour ne pas dire au pas cadencé. Je choisis de préférence les films asiatiques qui prennent le temps d'inviter le spectateur. Les rayures viennent des personnages principaux comme si leurs parents leur avait donné le bain tout en les savonnant avec le côté rugueux d'une éponge. Les rayures sont toujours difficiles à partager et c'est ce qui poussent les deux protagonistes à vouloir se séparer. Et pourtant, au fil du film, alors qu'on part en visite chez les parents, on découvre que ces rayures s'emboîtent très bien pour les deux personnages. Ces deux grands enfants, que leurs parents continuent de rayer si bien, parlent peu comme s'ils voulaient se prémunir de rayer à leur tour au point que l'un d'eux s'arrête alors qu'il est en train de tromper sa compagne, interrompu par l'image animale que cela lui évoque. On ne devient pas volubile quand on a l'habitude raye les mots avant qu'ils ne rayent eux-mêmes mais le rire a la curieuse audace de rayer si joliment le visage. Je retiens aussi ce père qui n'a pas passé beaucoup de temps avec son fils. Il exprime son regret en ayant un autre enfant avec une autre femme avec l'envie de faire tout comme il aurait dû le faire, comme s'il voulait repeindre une vieille peinture trop abîmée par le temps.

Je terminerai par un cliché. J'ai vu un film américain extraordinaire qui m'a donné envie d'acheter des livres et de sculpter dedans, j'ai même cru un moment que Gondry l'avait réalisé : Me and Earl and the Dying Girl (film). Je cite de mémoire cette phrase tirée du film car je sais qu'elle est vraie : on en apprend beaucoup sur les gens après leur mort. Ils n'en sont que plus vivant. Le personnage principal à l'habitude de rayer d'abord avec ses mots de peur qu'on le raye ensuite.

2016-01-03 Les ordinateurs dans les séries

On a tous en mémoire les chiffres verts sur fond noir de Matrix. C'est à peu près la seule illustration dont tout le monde se souvienne de ce qu'il se passe au sein d'un ordinateur. Je suppose que celle-ci correspond bien à l'idée qu'on s'en fait puisqu'elle est tout-à-fait incompréhensible. C'est juste une série de chiffres qui ne correspond pas au quotidien.

The Code propose une nette amélioration. Certes, il y a toujours ces écrans noirs remplis d'instructions mais celles-ci ont tout-à-fait crédibles. J'arrive à les associer à mon quotidien d'ingénieur. Mais il y a aussi ces illustrations transparentes : déplacements de fichiers, téléchargements, navigation réseau, tout apparaît en surimpression de celui qui en est la source ou de celui qui les observe. Et à l'inverse de Matrix, elles reflètent vraiment ce qu'il se passe. Je ne sais pas si cette visualisation est inspirée de Google glass. Je suppose qu'on verra plus souvent ces deux focales.

2015-12-22 Deep Learning and others readings

I came accross the following article Evaluation of Deep Learning Toolkits which studies a short list of libraries for deep learning: Caffe, CNTK, TensorFlow, Theano, Torch, and various angles: modeling capability, interfaces, model deployment, performance, architecture, ecosystem, cross-platform. It gives a nice overview and helps choosing the library which fits your needs. Once your deep models has been trained, how to use it? This question should be the first one to be answered.

As machine learning and big data become more and more popular, people look for ways to simplify the implementation of complex chains of processings. Python is quite popular so here is one suggestion in that language for deep learning: Blocks and Fuel: Frameworks for deep learning (Bart van Merriënboer, Dzmitry Bahdanau, Vincent Dumoulin, Dmitriy Serdyuk, David Warde-Farley, Jan Chorowski, Yoshua Bengio). It introduces Fuel which models pipelines of data processing.

Finally, a nice tutorial on machine learning with Python: PyData Seattle 2015 Scikit-learn Tutorial. The author's blog is nice too: Pythonic Perambulations. See Out-of-Core Dataframes in Python: Dask and OpenStreetMap. Some modules are hidden in his blog posts such as gatspy which plots timeseries in many ways or supersmoother to smooth timeseries or line_profiler in Optimizing Python in the Real World: NumPy, Numba, and the NUFFT. Two other readings to conclude: Why Python is Slow: Looking Under the Hood and Frequentism and Bayesianism: A Practical Introduction still from the same source.

01/06/2015 Comparative Study of Caffe, Neon, Theano, and Torch for Deep Learning

2015-12-11 Machine learning automatique

Et si plutôt que d'essayer de caler le meilleur modèle sur votre jeu de données, vous esssayiez d'apprendre un modèle qui le fait pour vous... Il existe une conférence pour cela : AutoML workshop @ ICML'15 et un module auto-sklearn.

Et toujours awesome-machine-learning

2015-12-01 Quelques articles de blog, Rodeo, TensorFlow, Tableau, Autoreload, RLPy

Rodeo facilite l'écriture de rapports avec des équations, du code et des graphes. Il est convertit en markdown et PDF : Rodeo 1.1 - Markdown, Autoupdates, Feedback.

Lorsqu'on met à jour un module, les modifications ne sont pas prises en compte automatiquement dans un notebook. Il faut le recharger. Il existe une extension qui fait ça pour vous : Autoreload des modules sous iPython.

Tableau est une application gratuite dans certains cas qui permet de réaliser facilement des dashboards afin de visualiser rapidement des données avec des graphiques animés.

Module pour faire de l'apprentissage par renforcement : RLPy: A Value-Function-Based Reinforcement Learning Framework for Education and Research. Lire également : Batch Learning from Logged Bandit Feedback through Counterfactual Risk Minimization.

Un article sur TensorFlow : What you wanted to know about TensorFlow.

2015-11-30 Hackathon ENSAE - Microsoft - Croix-Rouge

Ce hackathon que j'ai contribué à organiser fait partie des moments que je ne pourrai jamais oublier tant il fut incroyable.

Un grand merci à toutes les personnes qui ont participé, en particulier les élèves qui ont montré une détermination sans faille jusqu'à la dernière minute.


<-- -->

Xavier Dupré