Я уже много лет борется с этим. Я не могу понять, почему у меня процентная ошибка в тысячах. Я пытаюсь выяснить персептрон между X1 и X2, которые являются гауссовыми распределенными наборами данных с различными средствами и идентичными ковариациями. Мой код:MATLAB Perceptron
N=200;
X = [X1; X2];
X = [X ones(N,1)]; %bias
y = [-1*ones(N/2,1); ones(N/2,1)]; %classification
%Split data into training and test
ii = randperm(N);
Xtr = X(ii(1:N/2),:);
ytr = X(ii(1:N/2),:);
Xts = X(ii(N/2+1:N),:);
yts = y(ii(N/2+1:N),:);
w = randn(3,1);
eta = 0.001;
%learn from training set
for iter=1:500
j = ceil(rand*N/2);
if(ytr(j)*Xtr(j,:)*w < 0)
w = w + eta*Xtr(j,:)';
end
end
%apply what you have learnt to test set
yhts = Xts * w;
disp([yts yhts])
PercentageError = 100*sum(find(yts .*yhts < 0))/Nts;
Любая помощь будет оценена по достоинству. Спасибо
Вы отсутствуют некоторые определения - 'X1',' X2' (которые 100x2 матрицы), 'Nts' (который я угадать просто «N/2') - без них ваша проблема не может быть реплицирована (или, по крайней мере, не легко). –