One of my favorite tricks in Jupyter notebooks is using ipywidgets.interact to explore an equation or dataset. Two equations I used it on were the logistic sigmoid and Bayes classifiers decision boundaries. (I also used ipywidgets to explore the dataset smallNORB.)

For example, to understand the logistic sigmoid function a little better, I used this:

which was created using:

import numpy as np
import matplotlib.pyplot as plt

from ipywidgets import interact

# The function I'm studying!
def logistic_sigmoid(xx, vv, b):
return 1 / (1 + np.exp(-(np.dot(vv, xx) + b)))

plt.clf()
grid_size = 0.01
x_grid = np.arange(-5, 5, grid_size)

def plot_logistic_sigmoid(vv1, bb1, vv2, bb2):
plt.plot(x_grid, logistic_sigmoid(x_grid, vv=vv1, b=bb1), '-b')
plt.plot(x_grid, logistic_sigmoid(x_grid, vv=vv2, b=bb2), '-r')
plt.axis([-5, 5, -0.5, 1.5])
plt.show()

interact(
plot_logistic_sigmoid,
vv1=(-12, 10, .25),
bb1=(-10, 10),
vv2=(-10, 12),
bb2=(-10, 10)
)

### Bayes Classifiers with multivariate Gaussians

I did something similar for Bayes classifiers with multivariate Gaussians.