Dies ist eine alte Version des Dokuments!
Da der k-nearest-Neighbor-Algorithmus sehr ungenau ist, normalisieren wir die Vektoren des Datensatz, was die Genauigkeit des Algorithmus signifikant steigert.
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.
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))