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