This is a blog by a beginner, for beginners, to learn machine learning. Hopefully this is guided enough to be actually useful for people. That said, there are unfortunately some prerequisites, but I hope to keep these a minimum so that it’s accessible for more people.

- I’ll use
**Python 3**to show any code samples. While knowledge of frameworks isn’t required at all, a basic understanding of the Python syntax will definitely help. - Some basic linear algebra (high-school level suffices). Basically, things like matrix multiplication, converting a system of equations to matrix form, and concepts like the inverse and trace of a matrix should be familiar to you. This is unfortunately a hard requirement; machine learning is based entirely on math. It’s recommended that you also have knowledge of calculus.
- Basic knowledge of working with the terminal. If you’re on Windows, for instance, some commands may be different. For example, on Linux, the command to run a Python 3 script is
`python3 file.py`

. On Windows, the 3 suffix isn’t required. This also goes for the`pip3`

command, which is used to install Python packages. For Windows, it’s recommended that you install Python 3 via the Anaconda distribution. *Update*: After writing a few posts, I now realize that an understanding of probability is definitely helpful. Among other concepts, Bayes rule, probability distributions, and independence are the most important, but are easy to catch up on. No advanced probability is required.

In this blog, we will try to uncover all the hidden details behind the most important algorithms in machine learning. If “it can be shown that […]”, we will show it instead of pawning it off on another book. There are a few places where we don’t do this, but that is only in the interest of keeping the discussion relevant to the topic at hand–for the most part, we will show every step of every math derivation, and there will be sufficient explanation for the steps.

We will also develop Python code to really get a feel for how things are done. In particular, we will rather extensively use the *numpy* library. You don’t need to know this beforehand; we will explain the code as it comes.

Also in the interest of keeping things relevant, if there are concepts that you should know to learn the workings of an algorithm, we usually discuss it briefly. For example, we give a quick overview of essential linear algebra concepts in the Principal Components Analysis post. We prefer this learn-as-you-go approach, and maintain that it helps keep you motivated, rather than throwing all the math concepts right at the beginning.