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:50]
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 63: Zeile 63:
   * k-nearest-Neighbor-Algorithmus mit Testbild (knNTest.py):​   * k-nearest-Neighbor-Algorithmus mit Testbild (knNTest.py):​
 <code python> <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>​ </​code>​
  
-  * Symbole lesen (symbole_lesen.py)+  * Öffnen von neuem Datensatz clean_symbols.p ​(symbole_lesen.py)
 <code python> <code python>
 from pickle import Unpickler from pickle import Unpickler
Zeile 93: Zeile 135:
 </​code>​ </​code>​
  
 +  * 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.1467294651.txt.gz · Zuletzt geändert: 2016/06/30 15:50 von henrikfrenzel