kNN_Classifier
Skrót:
Do tej funkcji wrzucasz zbiór punktów (dwukolorowych) i zbiór nowych punktów niepokolorowanych. Funkcja klasyfikuje (ocenia) jakiego koloru powinny być te nowe punkty.
Definiujemy funkcję o nazwie „kNN_Classifier”, która jako wynik zwraca zmienną ‘wynik’.
Funkcja ta pobiera 4 zmienne:
k – jest to liczba określająca ilu sąsiadów funkcja ma brać pod uwagę podczas swojego działania
test_data – współrzędne punktów, które ta funkcja ma zaklasyfikować
train_data – współrzędne punktów na podstawie których ta funkcja będzie klasyfikować punkty ze zmiennej test_data
train_labels – kolory poszczególnych punktów ze zmiennej train_data
Funkcja zwróci:
test_labels – kolory poszczególnych punktów ze zmiennej test_Data
Pętla „for” („od do”)
„size(test_data,1)” znaczy „ilość wierszy w 1 kolumnie tablicy test_data” – czyli innymi słowy – ile nowych punktów trzeba pomalować.
i = 1 – zaczynamy liczyć od jedynki (1)
i=1 : size(test_data,1) – licz po kolei każdy nowy punkt który musisz pokolorować
for i=1 : size(test_data,1) – dla każdego nowego punktu który musisz pokolorować (dla każdego punktu z tablicy (test_data) wykonaj ciąg instrukcji
Obliczamy korzystając ze wzoru pitagorasa odległość od każdego punktu ze zbioru test_data po kolei do każdego punktu ze zbioru train_data. Czyli. Bierzemy pierwszy nowy niepokolorowany punkt i liczymy jak daleko ma do WSZYSTKICH pokolorowanych punktów.
Dla tego JEDNEGO wybranego niepokolorowanego punktu zapisujemy wszystkie odległości pomiędzy nim a już pokolorowanymi punktami do tablicy „Odleglosci”. Każdą z tych odległości potem oznaczamy odpowiednim kolory (pierwszym albo drugim – według tablicy train_labels).
Mamy więc zapisane… jak daleko nasz wybrany niepokolorowany punkt ma do pozostałych punktów i jakiego koloru są to punkty.
Sortujemy tablice „Odleglosci” od najmniejszej do największej i wynik sortowania zapisujemy w tablicy „posortowane”.
Czyścimy dwie zmienne:
x – zmienna odpowiada ilości punktów drugiego koloru
y – zmienna odpowiada ilości punktów pierwszego koloru
Pętla for. Od 1 do ‘k’. Zmienną ‘k’ już tłumaczyliśmy – tutaj podajemy liczbę ile odległości ma brać pod uwagę oceniając kolor niepomalowanego punktu.
Wybierając tyle najbliższy odległości ile ustaliliśmy zmienną ‘k’ – liczymy czy prowadzą one do punktów o kolorze pierwszym czy drugim.
Jeżeli dany punkt jest bliżej punktów o pierwszym kolorze – to pomaluj go na ten kolor. Jeżeli dany punkt jest bliżej punktów o drugim kolorze to pomaluj go na niego.
Zapisz wynik do zmiennej test_labels <- czyli do zmiennej wyrzucanej przez funkcje.
walidacja
Skrót:
Ta funkcja wywołuje kNN_Classifier 100 razy i wyrzuca ile razy kNN źle ocenił kolor punktu.
Definiujemy funkcję o nazwie „walidacja” która zwraca ilość błędów wykonanych przez kNN_Classifier.
Dane jakie podajemy to:
k – z jaką zmienną k ma być wywoływany kNN_Classifier
data - tablica zawierająca współrzędne punktów
labels – tablica mówiąca o tym jakiego koloru są punkty z tablicy data
zmienna „blad” będzie zawierać ile błędów zrobi kNN przy 100 podejściach.
Pętla for. Jej zawartość wywołujemy 100 razy.
x – losujemy jeden punkt z pośród wszystkich punktów jakie podaliśmy w zmiennej „data”.
do zmiennej „wybrany” zapisujemy współrzędne wybranego przez nas punktu
posiłkujemy się tablicą pomocniczą i za jej pomocą tworzymy tablicę „dane”, która zawiera współrzędne wszystkich punktów ze zmiennej „data” oprócz tego jednego wylosowanego.
Wrzucamy do kNNa nasze punkty (oprócz tego wybranego jednego) i podajemy mu ich kolory a potem pytamy się jej jakby pokolorowała ten jeden punkt który wybraliśmy. Jeżeli się pomyli to zmienną „blad” zwiększamy o 1.
Wypisujemy wynik – czyli ilość błędów.