Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ss16:02.06.2016

Dies ist eine alte Version des Dokuments!


k-nearest-Neighbor-Algorithmus für MNIST Datensatz geschrieben

  • Definition der Zugehörigkeit und Häufigkeit
def zugehoerigkeit(zahlen,k):
	haeufigkeit=[[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0],[9,0]]
	for i in range(k-1):
		haeufigkeit[zahlen[i]][1] +=1
	haeufigkeit.sort(key=operator.itemgetter(1))
	return haeufigkeit[9][0]
  • Aufbau eines einfachen Datensatz
python
>>> from sklearn import datasets
>>> digits=datasets.load_digits()
>>> digits.keys()
['images', 'data', 'target_names', 'DESCR', 'target']
>>> digits.data
array([[  0.,   0.,   5., ...,   0.,   0.,   0.],
       [  0.,   0.,   0., ...,  10.,   0.,   0.],
       [  0.,   0.,   0., ...,  16.,   9.,   0.],
       ..., 
       [  0.,   0.,   1., ...,   6.,   0.,   0.],
       [  0.,   0.,   2., ...,  12.,   0.,   0.],
       [  0.,   0.,  10., ...,  12.,   1.,   0.]])
>>> digits.data.shape
(1797, 64)
>>> digits.images
array([[[  0.,   0.,   5., ...,   1.,   0.,   0.],
        [  0.,   0.,  13., ...,  15.,   5.,   0.],
        [  0.,   3.,  15., ...,  11.,   8.,   0.],
        ..., 
        [  0.,   4.,  11., ...,  12.,   7.,   0.],
        [  0.,   2.,  14., ...,  12.,   0.,   0.],
        [  0.,   0.,   6., ...,   0.,   0.,   0.]],

       [[  0.,   0.,   0., ...,   5.,   0.,   0.],
        [  0.,   0.,   0., ...,   9.,   0.,   0.],
        [  0.,   0.,   3., ...,   6.,   0.,   0.],
        ..., 
        [  0.,   0.,   1., ...,   6.,   0.,   0.],
        [  0.,   0.,   1., ...,   6.,   0.,   0.],
        [  0.,   0.,   0., ...,  10.,   0.,   0.]],

       [[  0.,   0.,   0., ...,  12.,   0.,   0.],
        [  0.,   0.,   3., ...,  14.,   0.,   0.],
        [  0.,   0.,   8., ...,  16.,   0.,   0.],
        ..., 
        [  0.,   9.,  16., ...,   0.,   0.,   0.],
        [  0.,   3.,  13., ...,  11.,   5.,   0.],
        [  0.,   0.,   0., ...,  16.,   9.,   0.]],

       ..., 
       [[  0.,   0.,   1., ...,   1.,   0.,   0.],
        [  0.,   0.,  13., ...,   2.,   1.,   0.],
        [  0.,   0.,  16., ...,  16.,   5.,   0.],
        ..., 
        [  0.,   0.,  16., ...,  15.,   0.,   0.],
        [  0.,   0.,  15., ...,  16.,   0.,   0.],
        [  0.,   0.,   2., ...,   6.,   0.,   0.]],

       [[  0.,   0.,   2., ...,   0.,   0.,   0.],
        [  0.,   0.,  14., ...,  15.,   1.,   0.],
        [  0.,   4.,  16., ...,  16.,   7.,   0.],
        ..., 
        [  0.,   0.,   0., ...,  16.,   2.,   0.],
        [  0.,   0.,   4., ...,  16.,   2.,   0.],
        [  0.,   0.,   5., ...,  12.,   0.,   0.]],

       [[  0.,   0.,  10., ...,   1.,   0.,   0.],
        [  0.,   2.,  16., ...,   1.,   0.,   0.],
        [  0.,   0.,  15., ...,  15.,   0.,   0.],
        ..., 
        [  0.,   4.,  16., ...,  16.,   6.,   0.],
        [  0.,   8.,  16., ...,  16.,   8.,   0.],
        [  0.,   1.,   8., ...,  12.,   1.,   0.]]])
>>> digits.images.shape
(1797, 8, 8)
>>> digits.images[0,:,:]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])
>>> import matplotlib.pyplot as plt
>>> plt.imshow(digits.images[0,:,:])
<matplotlib.image.AxesImage Object at 0x7f5cf834c650>
>>> plt.show()
  • Aufbau des MNIST-Datensatz

  • Einbinden des MNIST-Datensatz
import scipy.io
mat=scipy.io.loadmat('/[...]/[...]/scikit_learn_data/mldata/mnist-original.mat')
  • Schreiben der main-Funktion mit Ausgabe der Zugehörigkeit und Häufigkeit
def main(k):
	daten=mat['data']
	zahl=mat['label']
	zahlen=[]
	test=np.zeros((785,1))
	abstaende=nachbarn(test, daten)
	for i in range(15-1):
		zahlen.append(int(zahl[0,abstaende[i][1]]))
	print "Die Zahl ist: ", zugehoerigkeit(zahlen,k)
 
main(int(k))
ss16/02.06.2016.1466083102.txt.gz · Zuletzt geändert: 2016/06/16 15:18 von henrikfrenzel