All Posts

Blogging with Jupyter notebooks and Hugo

We are going to introduce a simplified workflow for publishing Jupyter notebooks on a website generated with Hugo. The python package nb2hugo will be used to convert the notebooks to markdown pages. The process will be fully automated thanks to Netlify. Once everything configured, you will just have to push your Jupyter notebooks to a Git repository to get them published on your website.

Playing with Pseudo-Random Number Generators (Part 3)

In Part 1 and Part 2, we showed some properties of a classic pseudo-random number generator, the linear congruential generator. In this part, we will introduce a more recent generator, splitmix64. Splitmix64 was created in 2013 as part of Java 8.

Playing with Pseudo-Random Number Generators (Part 2)

We introduced in Part 1 the linear congruential generators. In this second part, we will show some defects of such generators, considering the case where the modulus is a power of 2.

Playing with Pseudo-Random Number Generators (Part 1)

Random number generators have many applications. They can be used to introduce a part of “luck” in a game (for example drawing cards in poker) but also for other tasks such as Monte Carlo simulations (drawing multiple “random” samples). In this first part, we will introduce a very well known pseudo-random number generator, the linear congruential generator.

Programming a Decision Tree Predictor in Scala (Part 5)

We saw in Part 4 how to build a decision tree predictor. We are now going to create a predictor from a very classic machine learning data set, the Iris data set.

Programming a Decision Tree Predictor in Scala (Part 4)

We saw in Part 1 the basic structure of a decision tree. In Part 2 we created a class to handle the samples and labels of a data set. And in Part 3 we saw how to compute the leaves’ values to fit a data set. In this part, we are going to combine the previous results to build a decision tree predictor.

Programming a Decision Tree Predictor in Scala (Part 3)

We saw in Part 1 the basic structure of a decision tree and we created in Part 2 a class to handle the samples and labels of a data set. We are going to see now how to compute the prediction values of the leaves to fit a data set.

Programming a Decision Tree Predictor in Scala (Part 2)

We saw in Part 1 the basic structure of a decision tree. We are now going to create a class to handle the samples and labels of a data set. This class will be used in the remaining parts of this serie.

Programming a Decision Tree Predictor in Scala (Part 1)

Decision trees are simple to understand. Yet they are the basic element of many powerful Machine Learning algorithms such as Random Forest. This serie of blogs will introduce the concept of decision tree and also provide basic scala code for those who want to better understand as well as do some experiments.

Connecting to Jupyter Lab via ssh

Jupyter Lab is only at version 0.32 at the time of writing, but it is already very promising. It is like a small IDE running in your web browser. It allows to conveniently edit and run files on a remote server. We tested Jupyter Lab on a connection with high latency (>300ms) and using the text editor, notebooks or the file manager was easy and reactive. Only the terminal was suffering from some lag, but at a level that was still bearable. We are going to see now how to remotely connect to a server running Jupyter Lab.