Machine learning and data science are very technical fields. While the payoff for those who become masters of the trade is potentially very high, finding the right guidance and learning resources is crucial for succeeding in the field.

On this page, you’ll find a list of the best resources I’ve come across to learn data science and machine learning. The resources include online courses, tutorials, Youtube channels, and books. I’ve grouped the resources by topics and classified them by level ranging from beginner to advanced.

*Disclosure: Some of the links in the following sections are affiliate links. This means I may earn a small commission at no additional cost to you if you decide to purchase. As an Amazon affiliate, I earn from qualifying purchases. I could be an affiliate for many online education products. I’ve specifically chosen to partner with the providers of courses and books that I recommend based on my own experience. By using my links, you help me provide information on this blog for free.*

## Online Courses

*There are tons of courses on machine learning on the web. Unfortunately, I don’t have the time to test all of them. I primarily rely on Coursera and Datacamp for continuous learning because I’ve repeatedly had great experiences with their courses and they are reasonably priced. Accordingly, my recommendations will focus on these platforms.*

### General Machine Learning

**Machine Learning** by Andrew Ng on Coursera

**Level:** Beginner**Prerequisites:** High school math and basic programming skills

This is one of the most popular introductory machine learning courses on the Internet taught by Andrew Ng. Andrew’s videos explaining machine learning are legendary for his clarity and ability to break down complex concepts. The videos come with quizzes and programming assignments. A big drawback with this course is that the programming assignments are in Octave/Matlab and not in Python.

Take the “**Machine Learning**” course on Coursera.

**Machine Learning** **Specialization** by the University of Washington on Coursera

**Level:** Beginner**Prerequisites:** High school math and basic programming skills

The machine learning specialization teaches you the foundational concepts in a combination of videos, quizzes, and programming assignments. The explanations are kept relatively high-level, so you don’t need advanced math. The programming assignments are fairly easy compared to other courses and certainly not enough to prepare you for the real world. Overall, it is a great high-level introduction to the field. I highly recommend supplementing the course with end-to-end machine learning projects to solidify your learnings.

Take the “**Machine Learning** **Specialization**” on Coursera.

**Machine Learning Fundamentals with Python** on Datacamp

**Level:** Beginner**Prerequisites:** High school math and basic programming skills

The machine learning fundamentals skills track is probably the best program for absolute beginners who want to learn by doing. It really takes you by the hand and spoon-feeds you the concepts in short videos followed immediately by programming assignments and quizzes.

Take the “** Machine Learning Fundamentals with Python**” on Datacamp.

### Deep Learning

**Deep Learning Specialization **on Coursera

**Level:** Beginner-Intermediate**Prerequisites:** High school math, basic Python programming skills. Basic knowledge of machine learning is helpful but not necessary

The deep learning specialization also taught by Andrew Ng is one of the best introductions to deep learning and neural networks. The series of courses is very accessible even if you don’t have an advanced math background in calculus and statistics.

You only need basic Python programming skills and high-school math. Andrew breaks the concepts down in a series of in-depth videos followed by quizzes. At the end of each week, you get to practice what you’ve learned in programming assignments in Python.

Take the “**Deep Learning** **Specialization**” on Coursera.

**Advanced Machine Learning** Specialization on Coursera

**Level:** Advanced**Prerequisites:** Good foundations in linear algebra, differential calculus, and basic statistics. Basic Python programming skills, an introductory machine learning course.

This specialization is a tour through various machine learning techniques such as reinforcement learning and Bayesian methods. The courses are pretty technical. So a good math foundation and at least one of the introductory courses mentioned above or a similar machine learning background are highly recommended. If you have gone beyond the basics in machine learning and want to get a tour through its various subfields to decide which one to focus on, I recommend taking this specialization.

Take the “**Advanced** **Machine Learning** **Specialization**” on Coursera.

### Reinforcement Learning

**Reinforcement Learning Specialization** on Coursera

**Level:** Intermediate-Advanced**Prerequisites:** Good foundations in calculus, and basic statistics are highly recommended. I also recommend getting a foundational understanding of machine learning and some experience implementing machine learning algorithms in Python.

In the reinforcement learning specialization on Coursera, you develop a foundational understanding of reinforcement learning. Overall, the specialization closely follows the classic textbook “Reinforcement Learning” by Sutton and Barto. If the book is a bit too theoretical and generally over your head because of the dense math, the course is a great choice. The instructors do a great job at making the concepts in the book more accessible and you’ll reinforce (pun intended) what you’ve learned with programming assignments.

It still is a tough series of courses and you should definitely plan 2-4 months to get through it if you don’t have more than an hour or two to invest every day.

Take the “**Reinforcement Learning Specialization**” on Coursera.

## Hands-On Books

*The following books are applied machine learning books teaching you both concepts and code. I recommend working through them cover-to-cover if you are a beginner. If you already have some background in machine learning and look to learn something about specific topics, these books are valuable for working through selected chapters.*

### General Machine Learning

**An Introduction to Statistical Learning**

**Level:** Beginner**Prerequisites:** High school math and basic programming skills. Familiarity with basic statistics and mathematical notation is helpful.

An Introduction to Statistical Learning is one of the best introductory textbooks on classical machine learning techniques such as linear regression. It was the first machine learning book I’ve bought and has given me a great foundation. The explanations are held on a high level, so you don’t need advanced math skills. Every chapter comes with code examples and labs in R. It is a great book to work through cover-to-cover.

Get “**An Introduction to Statistical Learning**” on Amazon

**Applied Predictive Modeling**

**Level:** Beginner**Prerequisites:** High school math and basic programming skills. Familiarity with basic statistics and mathematical notation is helpful.

Applied predictive modeling is one of my favorite books on machine learning foundations. Most machine learning books are either rigorous academic math-heavy textbooks that lack hands-on code examples, or they are a series of programming tutorials that are shallow on the theoretical foundations. Most books largely ignore the crucial steps that happen before modeling such as data preprocessing and feature engineering. Applied predictive modeling is one of the rare stand-outs that discusses the entire modeling process from start to finish, is rigorous in its treatment of algorithms, and has extensive practical examples in R.

Get “**Applied Predictive Modelling**” on Amazon

**Python Machine Learning** by Sebastian Raschka

**Level:** Beginner**Prerequisites:** High school math and basic programming skills in Python.

Sebastian Raschka has written a great introduction to applied machine learning. The book puts more emphasis on foundations and gaining a conceptual understanding of machine learning algorithms than most other applied books. At the same time, the book offers extensive examples in Python. The earlier parts of “Python Machine Learning” focus on classical machine learning while the latter parts contain an introduction to deep learning. Much like “Applied Predictive Modelling”, “Python Machine Learning” is one of the few books that also discuss data preprocessing and feature engineering.

If you want a comprehensive resource that helps you understand machine learning algorithms from scratch while also teaching you machine learning practice in Python, this is the book to get. The latest edition runs at more than 700 pages.

Get “** Python Machine Learning**” on Amazon.

### Deep Learning

**Deep Learning With Python** by Francois Chollet

**Level:** Beginner-Intermediate**Prerequisites:** High school math and basic programming skills in Python. Some basic understanding of machine learning is helpful.

“**Deep Learning With Python**” is probably the most comprehensive applied deep learning book. Francois Chollet is the inventor of Keras, an extremely popular deep learning API that runs on top of TensorFlow. In addition to deep learning concepts, readers will also gain a thorough understanding of the working mechanics underlying Keras It is a great book for beginners to work through, as well as for practitioners who want to develop production models with TensorFlow.

Get “**Deep Learning with Python**” on Amazon.

**Deep Learning with PyTorch** by Stevens, Antiga, and Viehmann

**Level:** Beginner-Intermediate**Prerequisites:** High school math and basic programming skills in Python. A basic understanding of neural networks and some experience constructing networks in TensorFlow is helpful.

In recent years, Pytorch has emerged as a serious alternative to TensorFlow among frameworks for building deep learning models. For all of those who want to learn to build deep neural networks in PyTorch instead of TensorFlow, this book is a great option. While you can work through the book as a deep learning novice, I believe you will benefit more from it if you already have an understanding of neural networks. The focus clearly is mainly on the mechanics of PyTorch rather than in-depth explanations of neural networks. If you already know TensorFlow, PyTorch will be easier to pick up anyways.

Get “**Deep Learning with PyTorch**” on Amazon.

### Reinforcement Learning

**Mastering Reinforcement Learning with Python **by Enes Bilgin

**Level:** Intermediate**Prerequisites:** Good foundations in linear algebra, differential calculus, and basic statistics, as well as some familiarity with mathematical notation. Some experience with applied machine learning is highly recommended before picking up this book.

The field of reinforcement learning is not yet as present in industry as deep learning and neural networks. Accordingly, the books on applied reinforcement learning are few and far between. “Mastering Reinforcement Learning with Python” walks you through basic RL concepts such as sequential decision-making and value functions. The book teaches you how to implement these concepts in Python and TensorFlow and also discusses how to scale and parallelize implementations. Compared to the classic textbook on RL by Sutton and Barto, “Mastering Reinforcement Learning with Python” is more accessible and definitely much more practice-oriented. Overall, this book is a solid choice if you want to get started with Reinforcement Learning.

Get “** Mastering Reinforcement Learning with Python**” on Amazon.

## Books on Machine Learning Theory

*The following books are academic textbooks. They all have been invaluable reference books for me that sit on the bookshelf next to my desk. You probably don’t want to read them cover-to-cover, but they are great for in-depth explanations of certain topics.* *Many of these books were written before the deep learning boom and strongly focus on classical machine learning techniques.*

I’ve classified most of the books as being for intermediate to advanced readers mainly because they require good mathematical foundations. But if you are a beginner, each of these books is a valuable reference along a beginner course or textbook to explore some topics more in-depth.

### General Machine Learning

**The Elements of Statistical Learning**

**Level:** Intermediate-Advanced**Prerequisites:** Good foundations in linear algebra, differential calculus, and basic statistics, as well as strong familiarity with mathematical notation. An introductory course to applied machine learning is highly recommended before picking up this book

The Elements of Statistical Learning was written by a group of Stanford statistics professors (the same authors who wrote the “Introduction to Statistical Learning”). It is very dense and really goes in-depth on many statistical machine learning techniques. You need to have a strong math background to be able to follow many of the explanations. For a practicing data scientist, I recommend getting this book as a reference.

Get “**The Elements of Statistical Learning**” on Amazon

**Pattern Recognition and Machine Learning**

**Level:** Intermediate-Advanced** Prerequisites: **Good foundations in linear algebra, differential calculus, and basic statistics, as well as strong familiarity with mathematical notation, are a prerequisite. An introductory course to applied machine learning is highly recommended before picking up this book.

Pattern Recognition and Machine Learning is another great reference book. It offers thorough explanations of some foundational topics such as probability distributions and many of the classical machine learning algorithms. I found Bishop’s explanations of kernel methods and kernel-based learning especially valuable.

Get “**Pattern Recognition and Machine Learning**” on Amazon

**Machine Learning: A Probabilistic Perspective**

**Level:** Intermediate-Advanced**Prerequisites:** Good foundations in linear algebra, differential calculus, and basic statistics, as well as strong familiarity with mathematical notation, are a prerequisite. An introductory course to applied machine learning is highly recommended before picking up this book

This book is probably the most comprehensive and in-depth machine learning book on my bookshelf. Its first 200 pages are dedicated to foundations in statistics and probability. You’ll learn a lot about Gaussian processes and why they are fundamental to most ML models, as well as Bayesian statistics and various probability distributions. There are also chapters on issues that are related to machine learning but often left out of curricula, such as Markov models and Monte Carlo processes. If you work in research, this is definitely one of the best reference books to get your hands on.

Get “**Machine Learning: A Probabilistic Perspective**” on Amazon.

### Deep Learning

**Deep Learning** by Ian Goodfellow, Yoshua Bengio, et al.

**Level:** Intermediate-Advanced**Prerequisites:** Good foundations in linear algebra, differential calculus, and basic statistics, as well as strong familiarity with mathematical notation, are highly recommended before attempting to read this book. An introductory course to applied machine learning would also be helpful.

This is the classic textbook on deep learning and neural networks. It was written by some of the best researchers in the field. Like most other machine learning theory books, this features lots of mathematical notation to illustrate the concepts along with some pseudocode to explain algorithms. The first few chapters briefly cover the foundations that you need to have in place including the mathematics and machine learning basics. Further chapters introduce neural networks and the issues involved in training them such as regularization and optimization.

The latter chapters discuss various network architectures in the field of computer vision and natural language processing as well as areas of ongoing research. The book was written in 2016, so newer network architectures like transformers are not covered. I have often referred to this book while developing machine learning architectures and also while writing many of the posts on this blog. I highly recommend getting “Deep Learning” as a reference if you develop deep learning-based systems. If you take the time to really understand what the authors are saying, it will undoubtedly make you a much better practitioner.

Get “**Deep Learning**” on Amazon!

### Reinforcement Learning

**Reinforcement Learning: An Introduction **by Sutton and Barto

**Level:** Intermediate-Advanced**Prerequisites:** Good foundations in linear algebra, differential calculus, and basic statistics, as well as strong familiarity with mathematical notation, are highly recommended before attempting to read this book. An introductory course to applied machine learning would also be helpful.

This is the classic textbook on Reinforcement Learning. It discusses all the foundational topics but it is quite theoretical and uses lots of mathematical notation to explain the concepts. It is a great reference book but I wouldn’t recommend it as a standalone resource for a complete beginner. Instead, I would encourage you to take the Reinforcement specialization on Coursera which closely follows the book, and get the book as a reference.

Get “** Reinforcement Learning: An Introduction**” on Amazon.

Take the “**Reinforcement Learning Specialization**” on Coursera.

## Blogs and Youtube Channels

*The web is full of free content on machine learning. Here is a selection of blogs and Youtube channels that I found especially helpful*.

**Machine Learning Mastery**

Machine Learning Mastery is probably the best and most comprehensive applied machine learning blog on the web today. The author, Jason Brownlee, has written hundreds of posts on applied machine learning with examples in Python.

**SentDex**

SentDex is a Youtube channel and blog by ** Harrison Kinsley** about Python programming. But Kinsley has also produced many videos and tutorials on machine learning with Python.

**Towards Data Science**

Towards data science is a medium publication where many authors submit posts. Unfortunately, this also means that the quality varies dramatically. Some articles offer great explanations, but many of them are written by newbies, and the quality is often subpar.