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, Pluralsight, 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.* *Coursera offers a great balance between lectures and hands-on labs. Datacamp is mainly hands-on. The video courses on Pluralsight are great for understanding more advanced topics. *

### General Machine Learning

**The New Machine Learning Specialization** by Andrew Ng on Coursera

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

In June 2022 Andrew Ng and his team released a brand new machine learning specialization. It is an improved and updated version of the immensely popular introductory Coursera machine learning course also 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. The new specialization also features programming assignments in Python. This is a very welcome change from the old course where the programming assignments were in Octave.

Take the new “**Machine Learning** **Specialization**” 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

**Update March 2022**: Coursera has decided to suspend all courses by Russian universities. Unfortunately, this means that the advanced machine learning specialization is no longer available.

**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.

#### TensorFlow

TensorFlow and Pytorch are the most important frameworks for building deep learning solutions. TensorFlow is the dominant framework in industry. If you want to get a deep learning job in industry, there is probably no way around TensorFlow.

**Building Machine Learning Solutions with TensorFlow Path** on PluralSight

**Level:** Beginner-Advanced**Prerequisites:** A basic understanding of neural networks and deep learning as well as Python programming.

This learning path consists of 11 video courses from taking you from beginner all the way to advanced TensorFlow professional.

Take “**Building Machine Learning Solutions with TensorFlow**” on PluralSight.

**TensorFlow Advanced Techniques** on Coursera

**Level:** Intermediate**Prerequisites:** A basic understanding of neural networks and deep learning as well as Python programming. Familiarity with basic Tensorflow. If you’ve taken the Deep Learning Specialization, you’ll have everything you need.

This specialization will turn you into a proficient user of TensorFlow. It teaches you how to build your own custom architectures with the functional API, override default settings, and define your own loss functions and classes. The latter courses focus on computer vision and generative deep learning.

Take the “**TensorFlow Advanced Techniques**” specialization on Coursera.

#### PyTorch

In recent years PyTorch has emerged as a serious contender to TensorFlow in the battle of deep learning frameworks. As of this writing, it is rapidly growing in the research community and also making inroads in industries such as autonomous driving. To be a future-proof deep learning engineer, definitely learn how to use it.

**Building Machine Learning Solutions with PyTorch Path** on PluralSight

**Level:** Beginner-Advanced**Prerequisites:** A basic understanding of neural networks and deep learning as well as Python programming.

This learning path consists of 11 video courses from taking you from beginner all the way to advanced PyTorch professional.

Take “**Building Machine Learning Solutions with PyTorch**” on PluralSight.

### 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.

### MLOps & Machine Learning Engineering

Being able to put a machine learning model into production and making sure that it runs reliably goes far beyond the ability to train models. MLOps and machine learning engineering combine DevOps, software engineering, and machine learning to productionize models. The following courses teach you those valuable skills.

**Machine Learning Engineering for Production Specialization** on Coursera

**Level:** Intermediate-Advanced**Prerequisites:** Good foundational understanding of machine learning, and some experience implementing machine learning algorithms and neural networks in Python, TensorFlow, or PyTorch. Basic knowledge about software engineering is also helpful.

This course, co-taught by Andrew Ng, teaches you all about building machine learning pipelines, managing data, and deploying models into production.

Take the “** Machine Learning Engineering for Production Specialization**” on Coursera.

**TensorFlow: Data and Deployment Specialization** on Coursera

**Level:** Intermediate-Advanced**Prerequisites:** Good foundational understanding of machine learning, and building neural networks in TensorFlow.

This course teaches you how to build machine learning pipelines and deploy models into production using TensorFlow. It also covers how to deploy models to edge devices such as mobile phones and how to run them in Web browsers.

Take the “** TensorFlow: Data and Deployment Specialization**” on Coursera.

**Machine Learning Engineering** on PluralSight

**Level:** Intermediate-Advanced**Prerequisites:** Good foundational understanding of machine learning.

This learning path consists of 5 short video courses that give you a conceptual understanding of machine learning engineering and the important issues and best practices involved in deploying a model into production.

Take “**Machine Learning Engineering**” on PluralSight.

## 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.*

The books can be purchased via Amazon or most booksellers.

### 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.

**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.

**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.

### 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.

**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.

### 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.

## 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.

**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.

**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.

### 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.

### 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.

## 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.