https://medium.com/@miranijunaid423/a-beginners-guide-to-machine-learning-understanding-the-fundamentals-of-supervised-and-4d09c260c69b