Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss16:23.06.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:23.06.2016 [2016/06/30 15:42]
henrikfrenzel
ss16:23.06.2016 [2016/07/07 16:50] (aktuell)
henrikfrenzel
Zeile 21: Zeile 21:
 scipy.io.savemat('/​[…]/​[…]/​scikit_learn_data/​mldata/​mnist-original-norm.mat',​ mdict={'​data':​data_neu,​ '​label':​label}) scipy.io.savemat('/​[…]/​[…]/​scikit_learn_data/​mldata/​mnist-original-norm.mat',​ mdict={'​data':​data_neu,​ '​label':​label})
 </​code>​ </​code>​
-  * Einlesen eines 28x28 Bildes (bildeinlesen.py)+  * Einlesen eines 28x28 Bildes (bild_einlesen.py)
 <code python> <code python>
 from scipy import misc from scipy import misc
Zeile 58: Zeile 58:
  return bild  return bild
 </​code>​ </​code>​
-  ​Symbole lesen (symbole_lesen.py)+   Testbild mit Bildgröße 28x28 (test.png) \\ 
 +{{:​ss16:​test.png?​200|}} 
 + 
 +  * k-nearest-Neighbor-Algorithmus mit Testbild (knNTest.py):​ 
 +<code python>​ 
 +from __future__ import division 
 +import numpy as np 
 +import operator 
 +import scipy.io 
 +import bild_einlesen as bl 
 +mat=scipy.io.loadmat('/​[…]/​[…]/​scikit_learn_data/​mldata/​mnist-original-norm.mat'​)  
 + 
 +def abstand(vektor1,​ vektor2): 
 + abstand=np.linalg.norm(vektor1-vektor2) 
 + return abstand 
 + 
 + 
 +def nachbarn(untersuchen,​ vergleich):​ 
 + abstaende=[] 
 + for i in range(vergleich.shape[1]-1):​ 
 + abstaende.append((abstand(untersuchen,​ vergleich[:,​i]),​i)) 
 + if i%1000==0:​ 
 + print i 
 + abstaende.sort(key=operator.itemgetter(0)) 
 + return abstaende 
 +  
 +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] 
 + 
 + 
 +def bestimmung(k):​ 
 + global eingelesen 
 + daten=mat['​data'​] 
 + zahl=mat['​label'​] 
 + zahlen=[] 
 + eingelesen=bl.bildlesen() 
 + test=eingelesen.daten 
 + testnorm=test/​np.linalg.norm(test) 
 + abstaende=nachbarn(testnorm,​ daten) 
 + for i in range(k-1):  
 + zahlen.append(int(zahl[0,​abstaende[i][1]])) 
 + print "Die Zahl ist: ", zugehoerigkeit(zahlen,​k) 
 + 
 +bestimmung(10) 
 +</​code>​ 
 + 
 +  * Öffnen von neuem Datensatz clean_symbols.p ​(symbole_lesen.py)
 <code python> <code python>
 from pickle import Unpickler from pickle import Unpickler
Zeile 76: Zeile 126:
 print "​Shape:​ ", data[2].shape print "​Shape:​ ", data[2].shape
 </​code>​ </​code>​
-  * Trainieren des k-nearest-Neighbor-Algorithmus 
  
 === Problem: === === Problem: ===
Zeile 85: Zeile 134:
 bestimmung(10) bestimmung(10)
 </​code>​ </​code>​
-  ​Testbild 28x28 (test.png\\ + 
-{{:ss16:test.png?200|}}+  ​Genauigkeit des k-nearest-Neighbor-Algorithmus 
 +<code python>​ 
 +from __future__ import division 
 +import numpy as np 
 +import math as m 
 +import operator 
 +import scipy.io 
 +import matplotlib.pyplot as plt 
 +import random 
 +import time  
 +mat=scipy.io.loadmat('/​[…]/​[…]/​scikit_learn_data/​mldata/​mnist-original-norm.mat'​) #pfad muss angepasst werden 
 + 
 +def abstand(vektor1,​ vektor2): 
 + abstand=np.linalg.norm(vektor1-vektor2) 
 + return abstand 
 + 
 + 
 +def nachbarn(untersuchen,​ vergleich):​ 
 + abstaende=[] 
 + for i in range(vergleich.shape[1]-1):​ 
 + abstaende.append((abstand(untersuchen,​ vergleich[:,​i]),​i)) 
 + if i%1000==0:​ 
 + print i 
 + abstaende.sort(key=operator.itemgetter(0)) 
 + return abstaende 
 +  
 +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] 
 + 
 +def bestimmung(k):​ 
 + daten=mat['​data'​] 
 + choice= np.random.choice(70000,​10000,​ replace=False) 
 + test=daten[:,​choice].copy(
 + datenkurz=np.delete(daten,​choice,​axis=1) 
 + zahllang=mat['​label'​] 
 + labels=zahllang[:,​choice].copy() 
 + zahl=np.delete(zahllang,​choice,​axis=1) 
 + richtigkeit=[] 
 + for i in range(100-1): 
 + zahlen=[] 
 + abstaende=nachbarn(test[:,i], datenkurz) 
 + for z in range(k-1):​ 
 + zahlen.append(int(zahl[0,​ abstaende[z][1]])) 
 + print "Die Zahl ist: ", zugehoerigkeit(zahlen,​k),​ " Label:"​ , labels[0][i] 
 + if zugehoerigkeit(zahlen,​k)==labels[0][i]:​ 
 + richtigkeit.append(1) 
 + return richtigkeit 
 + 
 +for j in range(10,​20):​ 
 + t1=time.clock() 
 + richtig=bestimmung(j) 
 + t2=time.clock() 
 + zeit=t2-t1 
 + prozentRichtig= len(richtig)/​99 
 + print "Fuer " ,j, "als k, betraegt die Zeit: ", zeit, "und die Genauigkeit:​ ", prozentRichtig 
 +</​code>​
ss16/23.06.2016.1467294176.txt.gz · Zuletzt geändert: 2016/06/30 15:42 von henrikfrenzel