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)