Реализация и построение перцептрона в MATLAB

Я просматриваю код из Toronto perceptron MATLAB code

Код

function [w] = perceptron(X,Y,w_init)

w = w_init;
for iteration = 1 : 100  %<- in practice, use some stopping criterion!
  for ii = 1 : size(X,2)         %cycle through training set
    if sign(w'*X(:,ii)) ~= Y(ii) %wrong decision?
      w = w + X(:,ii) * Y(ii);   %then add (or subtract) this point to w
    end
  end
  sum(sign(w'*X)~=Y)/size(X,2)   %show misclassification rate
end

Итак, я читал, как применить эту функцию к матрице данных X и цели Y, но сделайте не знаю, как использовать эту функцию, я так понимаю, она возвращает вектор весов, поэтому ее можно классифицировать.

Не могли бы вы привести пример и объяснить его ??

Я пробовал

X=[0 0; 0 1; 1 1]
Y=[1 0; 2 1]
w=[1 1 1]
Result = perceptron( X, Y, w )

??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> perceptron at 15
            if sign(w'*X(:,ii)) ~= Y(ii) 

    Result = perceptron( X, Y, w' )

??? Error using ==> ne
Matrix dimensions must agree.

Error in ==> perceptron at 19
        sum(sign(w'*X)~=Y) / size(X,2);     

Спасибо

Спасибо за ответы, я получил еще один, если я изменю Y = [0, 1], что произойдет с алгоритмом ?.

Итак, любые входные данные не будут работать с Y = [0,1] с этим кодом персептрона, верно?,

------------------- ---------- РЕДАКТИРОВАТЬ ------------------------

Еще один вопрос, если я хочу построить линия, разделяющая 2 класса , что я мог сделать?, я пробую что-то вроде

% the initial weights
w_init = [ 1 1 1]';  
% the weights returned from perceptron    
wtag   = perceptron(X,Y,w_init,15);

% concatenate both
Line = [wtag,w_init] 

% solve the linear system, am I correct doing this?
rref(Line')

% plot???

8
задан Matthew Simoneau 10 May 2011 в 20:53
поделиться