Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss16:09.06.2016 [2016/06/16 16:35] henrikfrenzel |
ss16:09.06.2016 [2016/06/23 14:52] (aktuell) henrikfrenzel |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
* Ausbesserung von Fehlern | * 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 | * Normalisierung des MNIST-Datensatz nach dem Einlesen | ||
<code python> | <code python> | ||
Zeile 8: | Zeile 9: | ||
return abstand | return abstand | ||
</code> | </code> | ||
- | * **Verbesserung der main-Funktion** | + | 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. |
- | * Aufsplitten des Datensatz in Test- und Vergleichsdaten | + | * **Erweiterung der main-Funktion** |
- | * Ausgabe der Häufigkeit | + | * Aufsplitten des Datensatz in zehntausend Test- und sechzigtausend Vergleichsdaten |
+ | * Ausgabe des labels von der untersuchten Zahl | ||
<code python> | <code python> | ||
def main(k): | def main(k): | ||
daten=mat['data'] | daten=mat['data'] | ||
- | choice= np.random.choice(70000,10000, replace=False) | + | choice=np.random.choice(70000,10000, replace=False) |
test=daten[:,choice].copy() | test=daten[:,choice].copy() | ||
datenkurz=np.delete(daten,choice,axis=1) | datenkurz=np.delete(daten,choice,axis=1) | ||
Zeile 28: | Zeile 30: | ||
main(int(10)) | main(int(10)) | ||
</code> | </code> | ||
- | + | ||
+ | Die Aufteilung des Datensatz in zehntausend Test- und sechzigtausend Vergleichsdaten erfolgt, um zu Überprüfen ob der k-nearest-Neighbor-Algorithmus die richtigen Zahlen zuordnet. Des Weiteren wollen wir wissen für welches k die bestmögliche Genauigkeit erzielt wird. k=10 hatte dabei die optimalste Genauigkeit von den getesteten Zahlen. | ||