Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss16:07.07.2016

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ss16:07.07.2016 [2016/07/07 16:21]
henrikfrenzel
ss16:07.07.2016 [2016/07/07 16:46] (aktuell)
henrikfrenzel
Zeile 1: Zeile 1:
 === Lösung: === === Lösung: ===
-Laufzeitproblem von letzter Woche basierte auf einem Vektorfehler.+Laufzeitproblem von letzter Woche basierte auf einem Vektorfehler
  
 === Ziele: === === Ziele: ===
   * knn-Algorithmus von scikit-learn für MNIST-Datensatz implementieren   * knn-Algorithmus von scikit-learn für MNIST-Datensatz implementieren
-=== Genauigkeit in Abhängigkeit von k: ===+<code python>​ 
 +from __future__ import division 
 +from sklearn.neighbors import NearestNeighbors 
 +import numpy as np 
 +import scipy.io 
 +import random  
 +from sklearn import neighbors 
 +mat=scipy.io.loadmat('/​[…]/​[…]/​scikit_learn_data/​mldata/​mnist-original-norm.mat'​) 
 + 
 +trainingsize=9000 
 +testsize=1000 
 +daten=mat['​data'​] 
 +choice1=np.random.choice(70000,​ trainingsize+testsize,​ replace=False) 
 +daten=daten[:,​choice1] 
 +daten=daten.transpose() 
 +print "​Datenshape:",​ daten.shape 
 +choice2= np.random.choice(trainingsize+testsize,​testsize,​ replace=False) 
 +test=daten[choice2,:​].copy() 
 +print "​Testshape:",​ test.shape 
 +datenkurz=np.delete(daten,​choice2,​axis=0) 
 +zahllang=mat['​label'​] 
 +zahllang=zahllang[:,​choice1] 
 +zahllang=zahllang.transpose() 
 +labels=zahllang[choice2,:​].copy() 
 +labels=labels.reshape((testsize,​)) 
 +zahl=np.delete(zahllang,​choice2,​axis=0) 
 +zahl=zahl.reshape((trainingsize,​)) 
 +</​code>​ 
 +Da der Algorithmus von sklearn mit einem anderen shape arbeitet als der MNIST-Datensatz,​ musste wir den Datensatz transponieren. Außerdem haben wir aus Laufzeitgründen den Datensatz verkleinert. 
 + 
 +=== Ausgabe der Genauigkeit:​ === 
 +<code python>​ 
 +clf = neighbors.KNeighborsClassifier(k) 
 +clf.fit(datenkurz,​ zahl) 
 +print clf.score(test,​labels) 
 +</​code>​ 
 + 
 +== Genauigkeit in Abhängigkeit von k: ==
 {{ :​ss16:​printme.png |}} {{ :​ss16:​printme.png |}}
-Der Algorithmus ist bei k von 6-9 am genausten.+Der Algorithmus ist bei k von 6-9 am genausten. Aus diesem Grund haben wir uns für k=8 entschieden. 
 + 
 +=== Support Vector Classification(SVC):​ === 
 +<code python>​ 
 +for i in range(2): 
 + if i==0: 
 + clf = neighbors.KNeighborsClassifier(8) 
 + if i==1: 
 + clf = svm.SVC() 
 + t1=time.clock() 
 + clf.fit(datenkurz,​ zahl) 
 + Genauigkeit=clf.score(test,​labels) 
 + t2=time.clock() 
 + zeit=t2-t1 
 + print 
 + print "​Genauigkeit:​ ", Genauigkeit,​ "Zeit: ", zeit  
 +</​code>​ 
 +== Ausgabe: == 
 +<code terminal>​ 
 +Genauigkeit: ​ 0.957 Zeit:  12.72157 #knn 
 + 
 +Genauigkeit: ​ 0.955 Zeit:  24.224649 #SVC 
 +</​code>​ 
 +Genauigkeit bei Support Vector Classification und k-nearest-Neighbor-Algorithmus ist ähnlich allerdings ist SVC deutlich langsamer als knn.
ss16/07.07.2016.1467901295.txt.gz · Zuletzt geändert: 2016/07/07 16:21 von henrikfrenzel