rosenblatt perceptron linear version ( done )
Afficher commentaires plus anciens
% I had problem with rosenblatt perceptron but i solved it :)
clc
clear all;
close all;
I = 1000; % number of class
n = 2 ;
eta = 0.5 ;
W = zeros(1,n+1) ;
k = 0 ;
X=rand(I,1);
X(:,2)=rand(I,1);
X(1:I/2,2)=X(1:I/2,2).*0.4;
X(I/2+1:I,2)=X(I/2+1:I,2).*0.4+0.6;
X=[ones(I,1),X];
Y=[ones(I/2,1)*(-1);ones(I/2,1)];
A=[1 2 3];
k=0;
while isempty(A)~=1
A=[];
for i=1:1:I
s=X(i,:)*W';
y=-1;
if s==0 || s>0
y=1;
end
if y~=Y(i)
A=[A;i];
end
end
k=k+1;
if isempty(A)
break
end
idx=randi(length(A));
W=W+eta*Y(A(idx))*X(A(idx),:);
clf
plot(X(1:I/2,2),X(1:I/2,3),'x')
hold on
plot(X(I/2+1:I,2),X(I/2+1:I,3),'o')
X1 = 0:0.05:1;
X2 = -(W(1)+W(2)*X1)/W(3) ;
hold on
plot(X1,X2,'r');
pause(0.2);
end
display(k);
Réponses (0)
Catégories
En savoir plus sur Pattern Recognition dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!