Option 1 | Option 2 |
---|---|
Option 1 | Option 2 |
---|---|
Option 1 | Option 2 |
---|---|
William of Ockham | A problem-solving principle |
---|---|
X = np.vstack([np.random.uniform(-1,1,500),np.random.uniform(-1,1,500)]).T
plt.xlabel('Height (cms)'),plt.ylabel('Weight (kgs)'),plt.xticks([]), plt.yticks([]),plt.tight_layout()
f = plt.scatter(X[:, 0], X[:, 1])
plt.xlabel('Height (cms)'),plt.ylabel('Weight (kgs)'),plt.xticks([]), plt.yticks([]),plt.tight_layout()
f = plt.scatter(X[:,0],X[:,1],c=y.flatten(),cmap=cm_bright)
plt.xlabel('Height (cms)'),plt.ylabel('Weight (kgs)'),plt.xticks([]), plt.yticks([]),plt.tight_layout()
plt.scatter(Xtrain[:,0],Xtrain[:,1],c=ytrain.flatten(),cmap=cm_bright)
plt.scatter(X[:,0],X[:,1],c='k',alpha=0.1)
<matplotlib.collections.PathCollection at 0x1a24081b00>
Typically by optimizing over an objective function
# plot data
fig = plt.figure(figsize=[12,5])
plt.subplot(121)
plt.scatter(X[:,0],X[:,1],c=y.flatten(),cmap=cm_bright)
plt.subplot(122)
plt.scatter(trainX[:,0],trainX[:,1],c=trainy,cmap=cm_bright)
<matplotlib.collections.PathCollection at 0x1a328879e8>
ax = plt.subplot(111)
plotBoundary(trainX,trainy,clf,ax)
plt.title('Training Data. Mistakes = %d of %d'%(trainMistakes,len(trainy)))
Text(0.5, 1.0, 'Training Data. Mistakes = 1 of 100')
But should we?
fig = plt.figure(figsize=(12,5))
ax = plt.subplot(121)
plotBoundary(trainX,trainy,clf,ax)
plt.title('Training Data. Mistakes = %d of %d'%(trainMistakes,len(trainy)))
ax = plt.subplot(122)
plotBoundary(X,y,clf,ax)
plt.title('All Data. Mistakes = %d of %d'%(allMistakes,len(y)))
Text(0.5, 1.0, 'All Data. Mistakes = 108 of 923')
fig = plt.figure(figsize=(12,5))
ax = plt.subplot(121)
plotBoundary(trainX,trainy,clf,ax)
plt.title('Training Data. Mistakes = %d of %d'%(trainMistakes,len(trainy)))
ax = plt.subplot(122)
plotBoundary(X,y,clf,ax)
plt.title('All Data. Mistakes = %d of %d'%(allMistakes,len(y)))
Text(0.5, 1.0, 'All Data. Mistakes = 10 of 923')