K-NN klasifikátor

Ukážka klasifikátora podľa zadania. Funguje v Javascripte, napriek tomu na mojom notebooku klasifikuje 4 * 1000 bodov pre všetky štyri výstupy do 8 sekúnd. Čas sa mení a postupne narastá, lebo Javascript vykonáva veľa čistenia pamäti (Garbage Collection). Pre viac ako 2000 štvoríc bodov už väčšinu času zaberá čistenie pamäti. Použil som optimalizáciu, že netriedim celé pole, ale vyberám vždy len k najmenších prvkov, takže zložitosť môjho riešenia je len O(n2).

Pre 1000 štvoríc bodov a k=15 sú zaujímavé seed napríklad: 2, 3, 4 alebo 8 - rôzne dvojice farieb, 10 – všetky body sú červené, 14 – len jeden bod je klasifikovaný ako červený – naozaj výnimočné, 18 – zaujímavo tvarovaná zelená, 23 – tiež zriedkavé, sú tam všetky štyri farby (aj 37 alebo 59).

Tlačidlo Reset maže všetky body okrem počiatočných. Tlačidlo Generuj vygeneruje body v závislosti na nastavenom seed pre generátor náhodných čísel a počtu bodov (pre každú farbu). Po prvom generovaní je aktívne tlačidlo Klasifikuj, ktoré vygeneruje body pre všetky výstupy (k), ktoré majú zaškrtnuté políčka. Pri zmene seed alebo počtu treba body najprv vygenerovať a až potom klasifikovať.