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:19]
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. 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.1467901196.txt.gz · Zuletzt geändert: 2016/07/07 16:19 von henrikfrenzel