Gradient descent is an optimization algorithm used to find the local minimum of a function. It is commonly used in many different machine learning algorithms. In this blog post, I will explain the principles behind gradient descent using Python, starting with a simple example of how gradient descent can be used to find the local minimum of a quadratic equation, and then progressing to applying gradient descent to linear regression. By the end of the post, you should be able to code your own version of gradient descent and understand the concept behind it.

In [1]:

```
# loading necessary libraries and setting up plotting libraries
import numpy as np
import seaborn as sns
import bokeh.plotting as bp
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from sklearn.datasets.samples_generator import make_regression
from scipy import stats
from bokeh.models import WheelZoomTool, ResetTool, PanTool
from JSAnimation import IPython_display
W = 590
H = 350
bp.output_notebook()
%matplotlib inline
```