=== 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='>> 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
>>> 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))