Welcome to the exciting world of machine learning! In this article, we’ll explore how to build fundamental machine learning models and algorithms using Python – all from scratch. Our aim? To demystify these concepts and help you understand how they tick.
About
This project focuses on providing accessible implementations of core machine learning algorithms. Instead of striving for the most optimized or computationally efficient solutions, we showcase the inner workings of these models transparently, making it easier for learners to grasp their functionality.
Table of Contents
Installation
To get started with the project, follow these simple steps:
$ git clone https://github.com/eriklindernoren/ML-From-Scratch
$ cd ML-From-Scratch
$ python setup.py install
Examples
Now that you have everything set up, let’s explore some examples of machine learning models.
Polynomial Regression
$ python mlfromscratch/examples/polynomial_regression.py

Figure: Training progress of a regularized polynomial regression model fitting temperature data measured in Linköping, Sweden 2016.
Classification With CNN
$ python mlfromscratch/examples/convolutional_neural_network.py
This model leverages a Convolutional Neural Network (CNN) for classifying images. Here’s a snapshot of the architecture:
+---------+ ConvNet +---------+
Input Shape: (1, 8, 8)
+----------------------+------------+--------------+
Layer Type Parameters Output Shape
+----------------------+------------+--------------+
Conv2D 160 (16, 8, 8)
Activation (ReLU) 0 (16, 8, 8)
Dropout 0 (16, 8, 8)
BatchNormalization 2048 (16, 8, 8)
...
Total Parameters: 538,570
Training achieved an accuracy of 98.75%!
Density-Based Clustering
$ python mlfromscratch/examples/dbscan.py

Figure: Clustering of the moons dataset using DBSCAN.
Generating Handwritten Digits
$ python mlfromscratch/unsupervised_learning/generative_adversarial_network.py
What if we imagine our neural network as a sophisticated artist that learns the strokes and styles necessary to generate realistic handwritten digits? The Generative Adversarial Network (GAN) operates in this manner, where it continuously improves its outputs through competition between a generator and a discriminator.
Input Shape: (100,)
...
Total Parameters: 1,489,936
Figure: Training progress of a Generative Adversarial Network generating handwritten digits.
Deep Reinforcement Learning
$ python mlfromscratch/examples/deep_q_network.py

Figure: Deep Q-Network solution to the CartPole-v1 environment in OpenAI gym.
Image Reconstruction With RBM
$ python mlfromscratch/examples/restricted_boltzmann_machine.py

Figure: Shows how the network gets better during training at reconstructing the digit 2 in the MNIST dataset.
Evolutionary Evolved Neural Network
$ python mlfromscratch/examples/neuroevolution.py
This model emphasizes the application of evolutionary principles in neural networks, mimicking the processes of natural selection.
Genetic Algorithm
$ python mlfromscratch/examples/genetic_algorithm.py
The Genetic Algorithm aims to evolve a candidate solution towards a specific target string, using operations like selection, crossover, and mutation.
Association Analysis
$ python mlfromscratch/examples/apriori.py
This technique identifies relationships between variables in large datasets—think of it as finding patterns in a treasure map!
Implementations
Supervised Learning
- Adaboost
- Decision Tree
- Logistic Regression
- …and many more!
Unsupervised Learning
Reinforcement Learning
Deep Learning
Contact
If you have suggestions for implementations or want to chat, feel free to email or connect on LinkedIn.
Troubleshooting
If you encounter issues while installing or running the code, consider the following:
- Ensure that your environment has the required dependencies installed.
- Verify that your Python version is compatible with the scripts.
- Check Git installation and permissions if you’re unable to clone the repository.
- For deeper issues, revisit your code step-by-step to debug any unexpected behavior.
For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.
At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

