Skip to content
Switch branches/tags


Personal lab to play around with algorithms and data.

NOTE: In order to make the implementations as understandable as possible I sometimes write more expressive code which could result in poor performance or disapproval of purists. I strongly believe that readability for such educational endeavors is more important than high-performance or idiomatic code.


X from scratch

From scratch implementations of various algorithms and models in pure Python.

Notebook nbviewer Google Colab Blog post
Gradient Descent Link Link Link
k-NN Link Link Link
Naive Bayes Link Link Link
Linear Regression Link Link Link
Multiple Regression Link Link Link
Logistic Regression Link Link Link
Decision Trees Link Link Link
Neural Networks Link Link Coming soon
k-means Clustering Link Link Coming soon

Running it

NOTE: You can pass an optional port number as the first CLI argument (i.e. ./jupyter-lab 3000).

Jupyter Lab


Jupyter Notebook