PROJECT

# 100 Days of Machine Learning

July 22 2019

### Introduction

Spring 2019, I took my first data science class as a computer science minor. The course essentially was an introduction to Machine Learning and ML algorithms. I had a lot of fun learning R and working on the pre-installed data sets. Our class learned about the different methods of learning: supervised, unsupervised and reinforcement. The class was mainly focused on supervised learning and classification problems. By the end of the semester, I had a solid understanding of machine learning foundations. But I felt that I lacked the proper mathematical knowledge to apply these principles to my own projects.

This summer I decided to take a deeper dive into machine learning by starting right from the basics. I will be exploring various mathematical topics including:

- Linear Algebra
- Multi-Variate Calculus
- Priniciple Component Analysis

Additionally, I would take time to create interactive visualizations and notes to drive the concepts home.

### Day 1 - 8

#### Linear Algebra

Found Khan Academy's amazing linear algebra course today. Learned that Vectors are just objects that have a direction and magnitude. They do not necessarily originate from the origin. I Also learned basic vector operations.

#### Adding Vectors

Vector 1 + Vector 2 = Vector 3

#### Multiplying and Dividing Vectors

Vector 1 × Scaling Factor = Vector 2

#### Subtracting Vectors

Vector 1 + (-1 × Vector 2) = Vector 3

#### Parametric Equation of a Line

Vector 1 + (-1 × Vector 2) = Vector 3

### Day 9

Day 9/100: Learned how to create vector fields and move vehicles using steering behaviour. Next Objective: Use a genetic algorithm to make the vehicle steer away from obstacles and reach a goal.#100DaysOfMLCode pic.twitter.com/mOWl0ViTIU

— Aryan Deora (@deora_aryan) July 31, 2019

### Day 10

Day 10/100: Created genetic code for the vehicles. The ones that reach closer to the target are more likely to make offsprings. Will work on the fitness and crossover function today to make natural selection more efficient.#100DaysOfMLCode pic.twitter.com/Ck6L1WAps6

— Aryan Deora (@deora_aryan) August 1, 2019

### Day 11

Day 11/100: The vehicles have now learned how to navigate through the purple obstacles. A huge thanks to Professor Daniel @shiffman's amazing book Nature Of Code that helped me through this coding challenge.#100DaysOfMLCode pic.twitter.com/JYM8ptgzTZ

— Aryan Deora (@deora_aryan) August 2, 2019

### Day 12

Day 12/100: Going back to learning linear algebra today. Trying to visualize Dot Product and Scalar Projections.#100DaysOfMLCode pic.twitter.com/biYH0YJN1E

— Aryan Deora (@deora_aryan) August 3, 2019

### Day 13

Day 13/100: Took a break to update my website. A snippet of what I made yesterday. Parametric Equation of a line. A non-zero vector (green) spans a line. Using another vector (blue), the line can be shifted up/down or to the left/right.#100DaysOfMLCode pic.twitter.com/iEBlYcNCvo

— Aryan Deora (@deora_aryan) August 7, 2019

### Day 14

Day 13/100: Took a break to update my website. A snippet of what I made yesterday. Parametric Equation of a line. A non-zero vector (green) spans a line. Using another vector (blue), the line can be shifted up/down or to the left/right.#100DaysOfMLCode pic.twitter.com/iEBlYcNCvo

— Aryan Deora (@deora_aryan) August 7, 2019

### Day 15

Day 15/100: Gave the flappy bird game a neon theme. Now it looks like an actual game I could play. Next up: Creating a genetic algorithm to make the bird learn how to fly through obstacles.#100DaysOfMLCode #100DaysOfCode pic.twitter.com/NlMY47RDcs

— Aryan Deora (@deora_aryan) August 10, 2019

### Day 16

Day 16: Well, Flappy Bird AI didn't work with a genetic algorithm alone. Will have to use a neural network instead. Meanwhile, here is a project I created while learning linear algebra that shows how any 2 linearly independent vectors span the whole 2D space.#100DaysOfCode pic.twitter.com/YVPLq1MDFl

— Aryan Deora (@deora_aryan) August 12, 2019

### Day 17

Day 17/100: Read Make Your Own Neural Network by Tariq Rashid today! Was an absolutely fun read. Learned new concepts and I am now ready to use them in tandem with genetic algorithms#100DaysOfCode #100DaysOfMLCode

— Aryan Deora (@deora_aryan) August 13, 2019

### Day 18

Day 18/100: FINALLY! After endless failed attempts, here is the Flappy Bird AI. The bird has a brain made up of a neural network which was evolved using a genetic algorithm. Again, Thanks to @shiffman for his amazing videos on Neuro-Evolution.#100DaysOfCode #100DaysOfMLCode pic.twitter.com/Wnf6F4lSLs

— Aryan Deora (@deora_aryan) August 15, 2019

### Day 19

Day 19/100: Took a break and documented the Flappy Bird Neuro-Evolution Code. Uploaded it to GitHub. All of the files can be found here: https://t.co/Jo69eIuSxx#100DaysOfCode

— Aryan Deora (@deora_aryan) August 16, 2019

### Day 20

Day 20/100: Travelling back to the USA for my senior year! Excited to start a new semester. Won't be coding for the next two days ðŸ˜ž #100DaysOfCode

— Aryan Deora (@deora_aryan) August 18, 2019

### Day 21

Day 21/100: Getting back on track! This week I will be implementing backpropogation to my Neural Network library. I will then test it with the MNIST dataset of handwritten digits. #100DaysOfMLCode #100DaysOfCode

— Aryan Deora (@deora_aryan) August 22, 2019