In [35]:
# Create a figure with 2 plot areas
fig, axes = plt.subplots(ncols=3, nrows=1, figsize=(15, 5))
 
# Everything sarts with a Scatterplot
axes[0].set_title('Scatterplot')
axes[0].scatter(X_train[:, 0], X_train[: ,1], c=y_train.reshape(-1),  cmap=cm.coolwarm) 
nbins = 20
 
# Evaluate a gaussian kde on a regular grid of nbins x nbins over data extents (Training examples)
k_train = kde.gaussian_kde(X_train.T)
xi_train, yi_train = np.mgrid[X_train[:, 0].min():X_train[:, 0].max():nbins*1j, X_train[:, 1].min():X_train[:, 1].max():nbins*1j]
zi_train = k_train(np.vstack([xi_train.flatten(), yi_train.flatten()]))

# Contour for training examples
axes[1].set_title('Contour for our training examples')
axes[1].pcolormesh(xi_train, yi_train, zi_train.reshape(xi_train.shape), shading='gouraud', cmap=cm.coolwarm)
axes[1].contour(xi_train, yi_train, zi_train.reshape(xi_train.shape) )


# Evaluate a gaussian kde on a regular grid of nbins x nbins over data extents (Test examples)
k_test = kde.gaussian_kde(X_test.T)
xi_test, yi_test = np.mgrid[X_test[:, 0].min():X_test[:, 0].max():nbins*1j, X_test[:, 1].min():X_test[:, 1].max():nbins*1j]
zi_test = k_test(np.vstack([xi_test.flatten(), yi_test.flatten()]))

# Contour for our testing examples
axes[2].set_title('Contour for our testing examples')
axes[2].pcolormesh(xi_test, yi_test, zi_test.reshape(xi_test.shape), shading='gouraud', cmap=cm.coolwarm)
axes[2].contour(xi_test, yi_test, zi_test.reshape(xi_test.shape) )
Out[35]:
<matplotlib.contour.QuadContourSet at 0x7f5d4c304240>