start second exercise
parent
47c402e817
commit
4d0f37741e
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,49 @@
|
||||||
|
# based on: https://github.com/eakbas/tf-svm/blob/master/plot_boundary_on_data.py
|
||||||
|
import numpy as np
|
||||||
|
from matplotlib import pyplot as plt
|
||||||
|
from matplotlib import colors
|
||||||
|
|
||||||
|
|
||||||
|
def plotTwoFeatures(X,T,pred_func):
|
||||||
|
if X.ndim!=2:
|
||||||
|
raise ValueError('X be a matrix (2 dimensional array).')
|
||||||
|
tp=False
|
||||||
|
if X.shape[0]!=2 and X.shape[1]==2:
|
||||||
|
X=X.T
|
||||||
|
tp=True
|
||||||
|
if X.shape[0]!=2:
|
||||||
|
raise ValueError('X must contain exactly 2 features.')
|
||||||
|
|
||||||
|
# determine canvas borders
|
||||||
|
mins = np.amin(X,1);
|
||||||
|
mins = mins - 0.1*np.abs(mins);
|
||||||
|
maxs = np.amax(X,1);
|
||||||
|
maxs = maxs + 0.1*maxs;
|
||||||
|
|
||||||
|
## generate dense grid
|
||||||
|
xs,ys = np.meshgrid(np.linspace(mins[0],maxs[0],300),
|
||||||
|
np.linspace(mins[1], maxs[1], 300));
|
||||||
|
|
||||||
|
|
||||||
|
# evaluate model on the dense grid
|
||||||
|
try:
|
||||||
|
Z = pred_func(np.c_[xs.flatten(), ys.flatten()].T);
|
||||||
|
except:
|
||||||
|
Z = pred_func(np.c_[xs.flatten(), ys.flatten()]);
|
||||||
|
|
||||||
|
if tp:
|
||||||
|
Z=Z.T
|
||||||
|
T=T.T
|
||||||
|
|
||||||
|
if Z.ndim>1 and Z.shape[0]>1: # onehot? -> convert
|
||||||
|
Z=Z.argmax(0)
|
||||||
|
Z = Z.reshape(xs.shape)
|
||||||
|
|
||||||
|
if T.ndim>1 and T.shape[0]>1: # onehot? -> convert
|
||||||
|
T=T.argmax(0)
|
||||||
|
|
||||||
|
# Plot the contour and training examples
|
||||||
|
plt.contourf(xs, ys, Z, cmap=plt.cm.Spectral)
|
||||||
|
plt.scatter(X[0,:], X[1,:], c=T, s=50,
|
||||||
|
cmap=colors.ListedColormap(['orange', 'blue', 'green']))
|
||||||
|
plt.show()
|
||||||
Loading…
Reference in New Issue