Załóżmy, że dane są liniowo separowalne (da się prostą oddzielić klasę od klasy). Będzie chodziło nam o to, żeby znaleźć prostą oddzielającą klasy.

Wagi - tak będziemy nazywać współczynniki \(w = (w_0, w_1, w_2)\) w równaniu prostej: \(w_0 + w_1 x_1 + w_2 x_2 = 0\). Do klasy \(1\) będziemy zaliczać takie punkty \((x_1, x_2)\), że \(w_0 + w_1 x_1 + w_2 x_2 \geq 0\) (po prostu wybieramy sobie stronę prostej, po której będzie klasa \(1\)).

Zaczynamy od losowych wag (czyli losujemy prostą, która miałaby rozdzielać klasy).

Będziemy powtarzać procedurę co najwyżej maxiter razy. Każde powtórzenie będzie się składać z \(n\) kroków (\(n\) - liczba obserwacji). Poniżej omówimy jedno powtórzenie i \(i\)-ty krok.

Krok \(i\)-ty:

Po każdym powtórzeniu (czyli po każdym przejściu po wszystkich obserwacjach) sprawdzamy warunek stopu opisany w poleceniu.

Poniżej na wykresach jest pokazane, co się dzieje w trakcie jednego powtórzenia (czyli wszystkie kroki). Na wykresie start zaznaczona prosta ma współczynniki równe wagom oraz narysowane są punkty, których kolor oznacza prawdziwą klasę. W kroku 1 błędnie klasyfikujemy obserwację czarną jako czerwoną i zmieniamy wagi. W krokach 2-5 poprawnie klasyfikujemy obserwacje, więc \(e_i = 0\) dla \(i=2,3,4,5\). W kroku 6 znów uaktualniamy wagi itd. Kończymy z wagami zaznaczonymi na wykresie koniec Sprawdzamy warunek stopu i albo od nowa wszystko powtarzamy, albo naprawdę koniec.