Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ss16:09.06.2016

Dies ist eine alte Version des Dokuments!


  • Ausbesserung von Fehlern

Da der k-nearest-Neighbor-Algorithmus sehr ungenau ist, normalisieren wir die Vektoren des Datensatz, was die Genauigkeit des Algorithmus signifikant steigert.

  • Normalisierung des MNIST-Datensatz nach dem Einlesen
def abstand(vektor1, vektor2):
	v1=vektor1/np.linalg.norm(vektor1)
	v2=vektor2/np.linalg.norm(vektor2)
	abstand=np.linalg.norm(v1-v2)
	return abstand

Dadurch wird der Algorithmus zwar sehr genau, da die Daten aber erst von dem Programm normalisiert werden, wird das Programm sehr langsam. Aus diesem Grund wollen wir den Datensatz schon vor dem Einlesen in das Programm normalisieren.

  • Erweiterung der main-Funktion
    • Aufsplitten des Datensatz in zehntausend Test- und sechzigtausend Vergleichsdaten
    • Ausgabe des labels von der untersuchten Zahl
def main(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)
	for i in range(10000-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]
main(int(10))
ss16/09.06.2016.1466685813.txt.gz · Zuletzt geändert: 2016/06/23 14:43 von henrikfrenzel