Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. clc
  2. clear all;
  3. close all;
  4.  
  5. I = 1000; % ilość klas
  6. n = 2 ; % ilośc atrybutów
  7. eta = 0.5 ;
  8. W = zeros(1,n+1) ; % ilośc wag
  9. k = 0 ;
  10.  
  11.  
  12.  
  13. % wektro X zawierający macierz
  14. % gdzie 1 kol = rand 0-1 czyli X
  15. % 2 kol do 500 ma max 0.4 a od 501 ma od 0.6 do 1 czyli Y na plocie
  16. X=rand(I,1);
  17. X(:,2)=rand(I,1);
  18. X(1:I/2,2)=X(1:I/2,2).*0.4;
  19. X(I/2+1:I,2)=X(I/2+1:I,2).*0.4+0.6;
  20.  
  21.  
  22.  
  23. % wektor X z wektorem jedynek
  24. X=[ones(I,1),X];
  25.  
  26. Y=[ones(I/2,1)*(-1);ones(I/2,1)];
  27.  
  28. A=[1 2 3];
  29. k=0;
  30. while isempty(A)~=1
  31. A=[];
  32. for i=1:1:I
  33. s=X(i,:)*W';
  34. y=-1;
  35. if s==0 || s>0
  36. y=1;
  37. end
  38. if y~=Y(i)
  39. A=[A;i];
  40. end
  41. end
  42. k=k+1;
  43. if isempty(A)
  44. break
  45. end
  46. idx=randi(length(A));
  47. W=W+eta*Y(A(idx))*X(A(idx),:);
  48. %% to można dać za display k
  49. %rysowanie zbioru punktów
  50. clf % czysci plota
  51. plot(X(1:I/2,2),X(1:I/2,3),'x')
  52. hold on
  53. plot(X(I/2+1:I,2),X(I/2+1:I,3),'o')
  54.  
  55.  
  56. %rysowanie prostej
  57. X1 = 0:0.05:1;
  58. X2 = -(W(1)+W(2)*X1)/W(3) ;
  59. hold on
  60. plot(X1,X2,'r');
  61. pause(0.2);
  62. %%
  63. end
  64. display(k);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement