Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ss16:02.06.2016

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 des MNIST-Datensatz
python
>>> import scipy.io
>>> mat=scipy.io.loadmat('/[…]/[…]/scikit_learn_data/mldata/mnist-original.mat')
>>> mat
'__globals__': [], 'mldata_descr_ordering': array([[array([u'label'], 
      dtype='<U5'),
        array([u'data'], 
      dtype='<U4')]], dtype=object), '__header__': 'MATLAB 5.0 MAT-file Platform: posix, Created on: Thu May 26 15:44:45 2016', 'label': array([[ 0.,  0.,  0., ...,  9.,  9.,  9.]]), '__version__': '1.0', 'data': array([[0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       ..., 
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)}
>>> dir(mat)
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']
>>> mat['data']
array([[0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       ..., 
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)
>>> mat['data'].shape
(784, 70000)
>>> mat.keys
<built-in method keys of dict object at 0x109098398>
>>> mat.keys()
['__globals__', 'mldata_descr_ordering', '__header__', 'label', '__version__', 'data']
>>> mat['label']
array([[ 0.,  0.,  0., ...,  9.,  9.,  9.]])
>>> mat['label'].shape
(1, 70000)
  • 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
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.txt · Zuletzt geändert: 2016/06/16 17:07 von henrikfrenzel