Welcome! This is **Deep Learning, Machine Learning, and Data Science Prerequisites: The Numpy Stack in Python**.

One question or concern I get a lot is that people want to learn deep learning and data science, so they take these courses, but they get left behind because they don’t know enough about the Numpy stack in order to turn those concepts into code.

Even if I write the code in full, if you don’t know Numpy, then it’s still very hard to read.

This course is designed to remove that obstacle - to show you how to do things in the Numpy stack that are frequently needed in deep learning and data science.

So what are those things?

**Numpy**. This forms the basis for everything else. The central object in Numpy is the Numpy array, on which you can do various operations.

The key is that a Numpy array isn’t just a regular array you’d see in a language like Java or C++, but instead is like a mathematical object like a vector or a matrix.

That means you can do vector and matrix operations like addition, subtraction, and multiplication.

The most important aspect of Numpy arrays is that they are optimized for speed. So we’re going to do a demo where I prove to you that using a Numpy vectorized operation is faster than using a Python list.

Then we’ll look at some more complicated matrix operations, like products, inverses, determinants, and solving linear systems.

**Pandas**. Pandas is great because it does a lot of things under the hood, which makes your life easier because you then don’t need to code those things manually.

Pandas makes working with datasets a lot like R, if you’re familiar with R.

The central object in R and Pandas is the DataFrame.

We’ll look at how much easier it is to load a dataset using Pandas vs. trying to do it manually.

Then we’ll look at some dataframe operations, like filtering by column, filtering by row, the apply function, and joins, which look a lot like SQL joins.

So if you have an SQL background and you like working with tables then Pandas will be a great next thing to learn about.

Since Pandas teaches us how to load data, the next step will be looking at the data. For that we will use**Matplotlib**.

In this section we’ll go over some common plots, namely the line chart, scatter plot, and histogram.

We’ll also look at how to show images using Matplotlib.

99% of the time, you’ll be using some form of the above plots.

**Scipy**.

I like to think of Scipy as an addon library to Numpy.

Whereas Numpy provides basic building blocks, like vectors, matrices, and operations on them, Scipy uses those general building blocks to do specific things.

For example, Scipy can do many common statistics calculations, including getting the PDF value, the CDF value, sampling from a distribution, and statistical testing.

It has signal processing tools so it can do things like convolution and the Fourier transform.

**SciKit-Learn**

SciKit-Learn is an awesome library that brings the most powerful AI models to you with absolutely ZERO work to do on your part. You can use state of the art models with just 2-3 lines of code, and I'm going to show you how.

In this section, which is a bonus addition I created a few years after I began the course, I also go over some machine learning and deep learning basics.

What is machine learning in the first place?

We talk about classification, regression, how to feed in ANY kind of dataset into your machine learning model, and a few important rules that, if followed, will make using and implementing machine learning algorithms an absolute breeze.

This section is what I call the "black sheep" of this course because it's the only section that contains new concepts. The previous sections are just about taking some mathematical concepts you already know (or should know if you follow the prerequisites), and teaching you the "computer commands" you need to accomplish them.

This new section is a 1-2 punch because it not only teaches you the SKLearn API, but also some very important concepts behind machine learning and artificial intelligence.

In sum:

If you’ve taken a deep learning or machine learning course, and you understand the theory, and you can see the code, but you can’t make the connection between how to turn those algorithms into actual running code, this course is for you.

Suggested Prerequisites:

Tips for success:

One question or concern I get a lot is that people want to learn deep learning and data science, so they take these courses, but they get left behind because they don’t know enough about the Numpy stack in order to turn those concepts into code.

Even if I write the code in full, if you don’t know Numpy, then it’s still very hard to read.

This course is designed to remove that obstacle - to show you how to do things in the Numpy stack that are frequently needed in deep learning and data science.

So what are those things?

The key is that a Numpy array isn’t just a regular array you’d see in a language like Java or C++, but instead is like a mathematical object like a vector or a matrix.

That means you can do vector and matrix operations like addition, subtraction, and multiplication.

The most important aspect of Numpy arrays is that they are optimized for speed. So we’re going to do a demo where I prove to you that using a Numpy vectorized operation is faster than using a Python list.

Then we’ll look at some more complicated matrix operations, like products, inverses, determinants, and solving linear systems.

Pandas makes working with datasets a lot like R, if you’re familiar with R.

The central object in R and Pandas is the DataFrame.

We’ll look at how much easier it is to load a dataset using Pandas vs. trying to do it manually.

Then we’ll look at some dataframe operations, like filtering by column, filtering by row, the apply function, and joins, which look a lot like SQL joins.

So if you have an SQL background and you like working with tables then Pandas will be a great next thing to learn about.

Since Pandas teaches us how to load data, the next step will be looking at the data. For that we will use

In this section we’ll go over some common plots, namely the line chart, scatter plot, and histogram.

We’ll also look at how to show images using Matplotlib.

99% of the time, you’ll be using some form of the above plots.

I like to think of Scipy as an addon library to Numpy.

Whereas Numpy provides basic building blocks, like vectors, matrices, and operations on them, Scipy uses those general building blocks to do specific things.

For example, Scipy can do many common statistics calculations, including getting the PDF value, the CDF value, sampling from a distribution, and statistical testing.

It has signal processing tools so it can do things like convolution and the Fourier transform.

SciKit-Learn is an awesome library that brings the most powerful AI models to you with absolutely ZERO work to do on your part. You can use state of the art models with just 2-3 lines of code, and I'm going to show you how.

In this section, which is a bonus addition I created a few years after I began the course, I also go over some machine learning and deep learning basics.

What is machine learning in the first place?

We talk about classification, regression, how to feed in ANY kind of dataset into your machine learning model, and a few important rules that, if followed, will make using and implementing machine learning algorithms an absolute breeze.

This section is what I call the "black sheep" of this course because it's the only section that contains new concepts. The previous sections are just about taking some mathematical concepts you already know (or should know if you follow the prerequisites), and teaching you the "computer commands" you need to accomplish them.

This new section is a 1-2 punch because it not only teaches you the SKLearn API, but also some very important concepts behind machine learning and artificial intelligence.

In sum:

If you’ve taken a deep learning or machine learning course, and you understand the theory, and you can see the code, but you can’t make the connection between how to turn those algorithms into actual running code, this course is for you.

Suggested Prerequisites:

- linear algebra
- probability
- Python coding: if/else, loops, lists, dicts, sets

Tips for success:

- Watch it at 2x.
- Take handwritten notes. This will drastically increase your ability to retain the information.
- Ask lots of questions on the discussion board. The more the better!
- Realize that most exercises will take you days or weeks to complete.
- Write code yourself, don't just sit there and look at my code.

- Introduction and Outline (07:50) (FREE preview available)
- Extra Resources (03:27)

- Numpy Section Introduction (05:28)
- Arrays vs Lists (12:40)
- Dot Product (07:02)
- Speed Test (02:55)
- Matrices (14:45)
- Solving Linear Systems (03:38)
- Generating Data (14:32)
- Numpy Exercise (01:05)

- Matplotlib Section Introduction (02:39)
- Line Chart (03:50)
- Scatterplot (04:31)
- Histogram (02:26)
- Plotting Images (07:40)
- Matplotlib Exercise (01:40)

- Pandas Section Introduction (01:17)
- Loading in Data (03:52)
- Selecting Rows and Columns (09:48)
- The apply() Function (02:32)
- Plotting with Pandas (02:46)
- Pandas Exercise (02:10)

- Scipy Section Introduction (01:25)
- PDF and CDF (03:07)
- Convolution (04:34)
- Scipy Exercise (01:03)

- Exercises (08:56)

- Machine Learning: Section Introduction (07:47)
- What is Classification? (12:22)
- Classification in Code (14:39)
- What is Regression? (12:14)
- Regression in Code (08:30)
- What is a Feature Vector (06:49)
- Machine Learning is Nothing but Geometry (04:50)
- All Data is the Same (05:23)
- Comparing Different Machine Learning Models (09:47)
- Machine Learning and Deep Learning: Future Topics (05:55)
- Machine Learning: Section Summary (05:47)

- When should I use Support Vector Machines? (11:16)
- What Level of Probability for Machine Learning? (10:30)

- What is Computer Vision? Guide to learning path for how to master Computer Vision with Deep Learning (15:05)

- What's this course about? How can you succeed? What should you know first? (06:08)
- Where to get the code (and how to install libraries) (03:50)
- Python 2 or Python 3? (01:09)

- Lists vs. Arrays (06:23)
- Dot product 1: For loop vs. cosine method vs. dot function (05:13)
- Dot product 2: Speed comparison (01:38)
- Vectors and Matrices (04:00)
- Generating Matrices to Work With (03:27)
- Matrix Products (02:39)
- More Matrix Operations (06:55)
- Solving a Linear System (02:29)
- Word Problem (01:48)

- Manual Data Loading (04:33)
- DataFrames (03:22)
- More about DataFrames: Selecting Rows and Columns (04:34)
- Even More about DataFrames: Column Names (03:22)
- The apply() Function (03:14)
- Joins (02:33)
- .values vs. .as_matrix() (07:10)

- Line Chart (03:20)
- Scatterplot (03:07)
- Histogram (03:04)
- Plotting Images (05:19)

- Gaussian PDF and CDF (05:01)
- Sampling from a Gaussian Distribution (1-D) (01:47)
- Sampling from a Gaussian Distribution (Spherical and Axis-aligned Elliptical) (03:09)
- Sampling from a General Multivariate Normal (03:03)
- Other Interesting Scipy Functions (05:55)

- What is the Appendix? (02:48)
- Should you code along? (11:00)
- Windows-Focused Environment Setup 2018 (20:21)
- How to install Numpy, Scipy, Matplotlib, Pandas, IPython, Theano, and TensorFlow (17:33)
- Proof that using Jupyter Notebook is the same as not using it (12:29)
- What order should I take your courses in? (part 1) (11:19)
- What order should I take your courses in? (part 2) (16:07)
- Python 2 vs Python 3 (04:38)
- Where to get discount coupons and FREE deep learning material (05:31)