| 
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 =  1Prediction 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