Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss16:02.06.2016 [2016/06/16 14:57] henrikfrenzel |
ss16:02.06.2016 [2016/06/16 17:07] (aktuell) henrikfrenzel |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
=== k-nearest-Neighbor-Algorithmus für MNIST Datensatz geschrieben === | === k-nearest-Neighbor-Algorithmus für MNIST Datensatz geschrieben === | ||
- | * Aufbau des Datensatz | + | * Definition der Zugehörigkeit und Häufigkeit |
- | <code terminal> | + | <code python> |
- | from sklearn import datasets | + | def zugehoerigkeit(zahlen,k): |
- | digits=datasets.load_digits() | + | 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): | |
- | digits.keys() | + | haeufigkeit[zahlen[i]][1] +=1 |
+ | haeufigkeit.sort(key=operator.itemgetter(1)) | ||
+ | return haeufigkeit[9][0] | ||
</code> | </code> | ||
+ | |||
+ | * Aufbau des MNIST-Datensatz | ||
+ | <code> | ||
+ | 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) | ||
+ | </code> | ||
+ | |||
* Einbinden des MNIST-Datensatz | * Einbinden des MNIST-Datensatz | ||
<code python> | <code python> | ||
import scipy.io | import scipy.io | ||
- | mat=scipy.io.loadmat('/[...]/[...]/scikit_learn_data/mldata/mnist-original.mat') | + | mat=scipy.io.loadmat('/[…]/[…]/scikit_learn_data/mldata/mnist-original.mat') |
</code> | </code> | ||
- | * Ausgabe der Zugehörigkeit und der Häufigkeit | + | * Schreiben der main-Funktion mit Ausgabe der Zugehörigkeit |
+ | <code python> | ||
+ | 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)) | ||
+ | </code> |