The following are in the order I'd recommend them. I've personally taken or have been through or still go through many of them.
Not all are necessary.
Pick and choose whatever sparks your curiosity the most.
They are code and beginner-focused. If you're new to the field of machine learning, this page is for you.
Note: All paid resources in this article have affiliate links. This means if you spend money on something, I'll get a small portion of the funds. This doesn't change the price for you at all but does help me feed my family and keep making things, so thank you.
Fundamental Python Skills
If you know nothing about machine learning or programming, you should start by learning Python code. If you already know Python code (3-6 months hands-on experience) skip to the next step.
Python is the dominant programming language for modern machine learning and deep learning. There are many languages you can write machine learning code in but worry about these later (it will be rare that you'll need them).
To learn Python, I'd recommend:
- Zero to Mastery Python Course - taught by Andrei Neogoie (50% of the machine learning course we teach together), so if you like this style, you'll like the machine learning course.
- Python for Everybody Specialization on Coursera - A fantastic introduction to the wonderful world of Python
- realpython.com - My favourite reference point for anything and everything Python, you'll probably find yourself here many times as you keep learning more about Python.
- freeCodeCamp's Python course on YouTube - A free introduction to Python all in one YouTube video.
Ground Floor Data Science and Machine Learning Skills
Once you've got some experience writing Python code, it's time to start writing machine learning specific code and getting familiar with the data science stack of: pandas, Scikit-Learn, NumPy, matplotlib (if these mean nothing to you now, don't worry, you'll learn them as you go).
To learn ground floor machine learning skills, I'd go through:
- Zero to Mastery Data Science and Machine Learning Course - I teach this course and I built it directly using the knowledge I'd learned working as a junior machine learning engineer.
- Data Science with Python on Coursera - I originally used this course to learn about pandas and different data science techniques when I first started learning about machine learning, it's still world-class.
- [Theory] Andrew Ng's Machine Learning Course - This is the OG (original gangster) machine learning course, taught using MatLab code but all of the theory still remains (I'd personally watch the videos and skip the coding assignments or do them with Python instead).
- [Overview] Machine Learning Roadmap 2023 - A birds-eye view of many of the different concepts in machine learning all gathered in one video and interactive roadmap.
Level 1 Deep Learning
Now you've got experience writing machine learning code, it's time to move on to deep learning.
Deep learning is a type of machine learning that currently powers many of the world's most powerful machine learning-powered applications (self-driving cars would not be possible without deep learning).
Start with these two foundation courses to get an overview of what deep learning is and what it can be used for, the next list of courses will be code-focused.
- AI for Everyone on Coursera - Get started understanding what is AI in a broad sense and then understand what it can and cannot do. This course will help give you an overview of AI in a less technical sense but still covers important ideas of what it takes to build an AI & machine learning-powered project.
- MIT Introduction to Deep Learning - A video series containing possibly the best high-level and deep-dive introduction to deep learning on the internet.
Level 2 Deep Learning
Coding and training models
Now you've got an idea of what deep learning is, now it's time to put it into practice and start writing code to run deep learning algorithms.
If you've done the previous courses and steps, you'll have more than enough prerequisites to get going with the following.
- Zero to Mastery TensorFlow for Deep Learning or Zero to Mastery PyTorch for Deep Learning – Learn to build state-of-the-art neural networks with TensorFlow/PyTorch code-first. This course is taught in side by side style, meaning I write code, you write code.
- Deep Learning Specialization on Coursera - I used these courses to learn about deep learning when I first got started with data science. They're some of the highest quality on the internet.
- fast.ai (all resources) – Whenever I want a no-BS approach to something new in the world of AI, I look up what Jeremy Howard has to say about it. Because of his independent viewpoints, he's only focused on the best of the best. And because of this, the fast.ai courses and software are sensational.
Level 3 Deep Learning
Getting your models into the hands of others
Alright, you've written some deep learning code and you've got an idea of where machine learning can be used in the world.
Time to use your skills to build something people can put their hands on.
This is what people mean when they say "deploy your models", deploying means putting your code somewhere other people can use it such as an application or website.
And to add to the confusion, these steps are often referred to as full-stack deep learning, MLOps (machine learning operations) and machine learning system design.
For these, you'll want to look into:
- Full Stack Deep Learning – Covers many of the concepts you'll need to know when dealing with machine learning applications (more than just training a model on an existing dataset).
- Made with ML's MLOps by Goku Mohandas – A comprehensive text-based course that goes through many of the steps in a full-stack machine learning project.
- Chip Huyen's Machine Learning System Design Course (CS329s) –Teaches you how to think about designing a machine learning system (where does the data come in? right to where does the data go out?). I teach a deployment tutorial in this course.
- Designing Machine Learning Systems book by Chip Huyen — If you want to build an ML system, it’d be good to know how others have done it. Chip’s book focuses less on creating a single machine learning model (though there’s plenty of content on that in the book) but rather on creating a cohesive ML system. It covers everything from data engineering to model building to model deployment (online and offline) to model monitoring. Even better, it’s a joy to read, you can tell the book is written by a writer (Chip has previously authored several books).
Other important developer skills
The world of software is large.
But once you get an idea of how different languages interact with each other and how different systems communicate, you can start to build an idea of what you might need to do to create the thing you want.
The following resources will help fill in many of the gaps you might run into.
If you're like me, you want to build applications other people can use, the following are resources that have helped me learn how to do such a thing.
- freeCodeCamp's materials – Especially those on web development, databases and version control (Git and GitHub).
- The Missing Semester of Your CS Education – Covers many of the tools you'll use every day as a developer but aren't often taught in computer science courses (think the command line, version control, shell tools, debugging).
- Zero to Mastery Web Developer Course – Taught to over 100,000 students worldwide by one of the best technology educators Andrei Neagoie, this course will help you learn how the internet works and build applications online that millions of others can use.
- Zero to Mastery SQL Course – SQL stands for Structured Query Language. It's the language that powers many databases around the world. This website you're reading runs off MySQL (a flavour of SQL). If you're going to be getting deep into machine learning, you'll likely come across SQL since it's so intertwined with data and as you'll find out: no data = no machine learning.
Getting a job
Start the job before you have it.
Courses teach foundational knowledge, building your own projects and sharing them with the world help you learn specific knowledge (knowledge that can't be taught).
For more on this, I'd suggest the following:
- Read "How should a beginner data scientist like me get experience?" by myself.
- Machine Learning Interviews book by Chip Huyen for how to prepare for machine learning interviews (though this is quite extensive, focus on less but better).
- See Chip Huyen's blog post on writing a resume, which mainly focuses on machine learning but the tips are almost universal for any tech role.
But even better than a job (and I’m very biased here), start a business. Or get a job, learn the fundamentals + field-specific skills, get out and then start something of your own.
The world needs more people who bet on themselves.
"What about books?"
I've got the following books on my desk and refer to them regularly.
- Hands-on Machine Learning with Scikit-Learn, Keras and TensorFlow by Aurelien Geron
- The Hundred-Page Machine Learning Book by Andriy Burkov [Read online]
- Machine Learning Engineering by Andriy Burkov [Read online]
- Deep Learning for Coders with fastai and PyTorch by Jeremy Howard & Sebastian Gugger [Read online]
- Mathematics for Machine Learning by Marc Deisenroth, A. Faisal & Cheng Ong [Read online]
"How should I learn all of this?"
Create your own path. Everyone learns differently.
You can read my articles on how I learned for an idea but really, that's just me and my style, better to create your own.
- 5 Beginner-Friendly Steps to Learn Machine Learning (video)
- How I'd start learning machine learning again, 3 years in (video)
- 6 techniques that help me study machine learning five days per week (video)
- Thinking of self-studying machine learning? Remind yourself of these 6 things (video)
- 12 things I learned during my first year as a machine learning engineer
Eugene Yan also has a great article on how to learn beyond MOOCs (massive online open courses). It echoes much of my sentiment on learning online: use courses for foundations and then use your own projects to build specific knowledge.
See You Don't Really Need Another MOOC by Eugene Yan for more.
Knowledge is best experienced shared, write down what you learn and share it with others.
Start your own blog for words and make a GitHub profile for code, these will become your own corner of the internet where people can find and learn more about you.
Keep learning, keep creating.
Treat it like a dance, follow your curiosity and hop from one idea to the next.