Prediction for number with index: ( 0 ) = [2] Known value = 2
Prediction for number with index: ( 1 ) = [3] Known value = 3
Prediction for number with index: ( 2 ) = [2] Known value = 2
Prediction for number with index: ( 3 ) = [2] Known value = 2
Prediction for number with index: ( 4 ) = [0] Known value = 0
Prediction for number with index: ( 5 ) = [2] Known value = 2
Prediction for number with index: ( 6 ) = [2] Known value = 2
Prediction for number with index: ( 7 ) = [2] Known value = 2
Prediction for number with index: ( 8 ) = [1] Known value = 1
Prediction for number with index: ( 9 ) = [1] Known value = 1 |
Het is nu natuurlijk ook eenvoudig om gewoon het getal weer te geven:
Prediction for number with index: ( 0 ) = [20] Known value = 20
Prediction for number with index: ( 1 ) = [12] Known value = 12
Prediction for number with index: ( 2 ) = [2] Known value = 2
Prediction for number with index: ( 3 ) = [11] Known value = 11
Prediction for number with index: ( 4 ) = [0] Known value = 0
Prediction for number with index: ( 5 ) = [2] Known value = 2
Prediction for number with index: ( 6 ) = [11] Known value = 11
Prediction for number with index: ( 7 ) = [2] Known value = 2
Prediction for number with index: ( 8 ) = [1] Known value = 1
Prediction for number with index: ( 9 ) = [10] Known value = 10
Wow! wat knap is ie toch :-)
Gebruikte code:
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import ImageGrid
import numpy as np
import time
from sklearn import svm
from load import mnist
trX, teX, trY, teY = mnist(onehot=True)
t0 = time.time()
ga = 0.028 # Hiermee (gamma = 0.028) wordt bij 10.000 oefeningen 97.07% betrouwbaarheid gehaald
size = 1000
clf = svm.SVC(gamma=ga, C=100)
# Eerst nullen, eenen en tweeen voor de oefendataset selecteren.
Y = np.argmax(trY,axis=1)
index=[]
elem = Y.size
for x in range(0,elem-1):
if Y[x] in range(0,3):
index += [x]
#print Y[x]
XX = np.take(trX, index, axis=0)
YY = np.take(Y,index)
# Nu nullen, eenen en tweeen voor de testdataset selecteren.
Y = np.argmax(teY,axis=1)
index=[]
elem, val = XX.shape
for x in range(0,size):
if Y[x] in range(0,3):
index += [x]
XXt = np.take(teX, index, axis=0)
YYt = np.take(Y,index)
#Nu samenstellen
XXX = np.concatenate((XX,np.flipud(XX)), axis = 1)
YYY = YY+np.flipud(YY)
XXXt = np.concatenate((XXt,np.flipud(XXt)), axis = 1)
YYYt = YYt+np.flipud(YYt)
clf.fit(XXX[0:size],YYY[0:size])
#clf.fit(XXX,YYY) # Totale set 'leren'.
print ""
print "reliability: ", np.mean(YYYt == clf.predict(XXXt)), time.time() - t0, "seconds, gamma: ", ga, " size :", size
print ""
t = 0
i = 0
fig = plt.figure(1,(5.,5.))
grid = ImageGrid(fig,111,
nrows_ncols = (10,2),
axes_pad=0.1,
)
while (t < 19 and i < 100):
if (YYYt[i] != clf.predict(XXXt[i])):
print "Prediction for number with index: (",i, ") = ", clf.predict(XXXt[i]), "Known value = ",YYYt[i]
im1 = XXXt[i,0:784]
im2 = XXXt[i,784:2*784]
im1.shape=28,28
im2.shape=28,28
grid[t].imshow(im1,cmap=plt.cm.gray_r)
grid[t+1].imshow(im2,cmap=plt.cm.gray_r)
#plt.imshow(im1, cmap=plt.cm.gray_r, interpolation="nearest")
t += 2
i += 1
plt.show()
Geen opmerkingen:
Een reactie posten