# Matrix Multiplication for Data Science (or Machine Learning)

Learn the math behind matrix multiplication for data science and machine learning with code examples.

Image by Author

## Key Takeaways

- Matrix multiplication plays an important role in data science and machine learning
- For matrix multiplication between two matrices to be well defined, the two matrices must be compatible, that is, the number of columns of matrix
**A**must be equal to the number of rows of matrix**B**. - Matrix multiplication is not commutative, that is
**AB**=**BA**.

Matrix multiplication plays an important role in data science and machine learning. Consider a dataset with *m* features and *n* observations as shown below:

A basic regression model can be represented as follows:

Where is the *n×m* feature matrix, and ** w** is the

*m×1*weight coefficients or regression coefficients matrix. Here we observe that the calculation of involves matrix multiplication between the feature matrix

**and the regression coefficient matrix**

*X***. Since**

*w***is an n ×m matrix and**

*X***is an**

*w**m ×1*matrix, matrix multiplication between

**and**

*X***is well defined. In matrix form, the equation above can be expressed simply as**

*w*

where *Xw* represents matrix multiplication between ** X** and

*w***.**

# Definition of Matrix Multiplication

Let **A **be and *n×p* matrix, and **B ** *a p×m* matrix,

the product matrix **C = AB **is an n×m matrix with elements given as

## Properties of Matrix Multiplication

Matrix multiplication is not commutative, that is

**AB≠BA**

# Implementation of Matrix Multiplication in Python

## Using for Loop

```
import numpy as np
A = np.array([[1,2,3],[4,5,6]]) # create (2 x 3) matrix
B = np.array([[7,8],[9,10],[11,12]]) # create (3 x 2) matrix
A.shape[1] == B.shape[0] # ensures two matrices are compatible
C = np.zeros((2,2)) # (2 x 2) matrix
for i in range(2):
for k in range(2):
for j in range(3):
C[i,k]= C[i,k] + A[i,j]*B[j,k]
print(C)
```

[[ 58, 64] [139, 154]]

## Using Numpy Library

```
C = np.dot(A, B)
print(C)
```

[[ 58, 64] [139, 154]]

Note that `np.dot(B, A) `

gives the following output:

`print(np.dot(B, A))`

[[ 39 54 69] [ 49 68 87] [ 59 82 105]]

Clearly, we see that *np.dot(A, B) ≠ np.dot(B, A)*.

In summary, we’ve discussed the mathematical basis of matrix multiplication. We also demonstrated how matrix multiplication can be performed using a short python code, and using the in-built matrix multiplication method in *numpy*.

**Benjamin O. Tayo** is a Physicist, Data Science Educator, and Writer, as well as the Owner of DataScienceHub. Previously, Benjamin was teaching Engineering and Physics at U. of Central Oklahoma, Grand Canyon U., and Pittsburgh State U.