# 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 X and the regression coefficient matrix w. Since X is an n ×m matrix and w is an m ×1 matrix, matrix multiplication between X and w is well defined. In matrix form, the equation above can be expressed simply as

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.