Tôi đang xem xét một mã từ Toronto perceptron MATLAB codethực hiện và ploting một Perceptron trong MATLAB
Mã này là
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
Vì vậy, tôi đang đọc làm thế nào để áp dụng chức năng này để dữ liệu ma trận X, và mục tiêu Y, nhưng, không biết cách sử dụng hàm này, tôi hiểu, nó trả về một vectơ có trọng số, do đó nó có thể phân loại.
Bạn có thể đưa ra một ví dụ và giải thích nó không ??
Tôi đã cố gắng
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);
Cảm ơn
Cảm ơn bạn đã anwers, tôi có thêm một, Nếu tôi thay đổi Y = [0, 1], những gì xảy ra với các thuật toán ?.
Vì vậy, Mọi dữ liệu đầu vào sẽ không làm việc với Y = [0,1] với mã này của Perceptron đúng ?,
-------------- --------------- CHỈNH SỬA ------------------------
Một câu hỏi nữa, nếu Tôi muốn vẽ đường dây chia 2 lớp, tôi biết chúng ta có thể nhận được rằng dòng giải phương trình tuyến tính hệ thống có liên quan đến trọng số, nhưng làm cách nào, tôi có thể làm gì ?, Tôi đang thử một cái gì đó như
% 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???
Phản hồi tốt đẹp !! – qdjm
Cảm ơn bạn rất nhiều, tôi thực sự hiểu ví dụ của bạn, nhưng có thêm một câu hỏi: Bạn sẽ làm gì nếu lớp 1 có nhiều ví dụ hơn lớp 0 ?? trong ví dụ bạn cung cấp có cùng số ví dụ cho cả hai lớp, X1 và X2 – cMinor
Điều này có đúng không, tôi không thể kiểm tra ngay bây giờ: X1 = [rand (1,100); rand (1,100);)]; % class '+1' X2 = [rand (1.300), 1 + rand (1.300); cái (1.300)]; % class '-1' X = [X1, X2]; % lớp đầu ra [-1, + 1]; Y = [- những người (1,100), những người (1.300)]; % vectơ weigth init w = [.5 .5 .5] '; wtag = perceptron (X, Y, w); – cMinor