perceptron and ANN
Posted Pkj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perceptron and ANN相关的知识,希望对你有一定的参考价值。
1 %% Perceptron Regression 2 close all 3 clear 4 5 %%load data 6 x = load(\'ex4x.dat\'); 7 y = load(\'ex4y.dat\'); 8 9 x=ones(80,2); 10 for i=1:80 11 x(i,1)=mod(i,10); 12 x(i,2)=floor(i/10); 13 end 14 15 for i=1:80 16 if (x(i,1)+x(i,2))<10 17 y(i)=0; 18 else 19 y(i)=1; 20 end 21 end 22 23 [m, n] = size(x); 24 25 % Add intercept term to x 26 x = [ones(m, 1), x]; 27 28 %%draw picture 29 % find returns the indices of the 30 % rows meeting the specified condition 31 pos = find(y == 1); 32 neg = find(y == 0); 33 % Assume the features are in the 2nd and 3rd 34 % columns of x 35 figure(\'NumberTitle\', \'off\', \'Name\', \'感知机\'); 36 plot(x(pos, 2), x(pos,3), \'+\'); 37 hold on; 38 plot(x(neg, 2), x(neg, 3), \'o\'); 39 40 %进行初始化 41 s = 1; % 标识符,当s=0时,表示迭代终止 42 n = 0; % 表示迭代的次数 43 N = 10000; %定义N为最大分类判别次数,判别次数超过此值则认定样本无法分类。 44 w= [0,0,0]\'; % 取权向量初始值 45 46 % 开始迭代 47 while s 48 J = 0; % 假设初始的分类全部正确 49 for i = 1:size(pos) 50 if (x(pos(i),:)*w)<=0 % 查看x1分类是否错误,在x属于w1却被错误分类的情况下,w\'x<0 51 w = w+x(pos(i),:)\';% 分类错误,对权向量进行修正 52 J = 1; % 置错误标志位为1 53 end 54 end 55 for i = 1:size(neg) 56 if (x(neg(i),:)*w)>=0 % 查看x2分类是否错误,在x属于w2却被错误分类的情况下,w\'x>0 57 w = w-x(neg(i),:)\';% 分类错误,对权向量进行修正 58 J = 1; % 置错误标志位为1 59 end 60 end 61 if J==0 % 代价为0,即分类均正确 62 s = 0; % 终止迭代 63 end 64 n = n+1; % 迭代次数加1 65 if n == N 66 s=0; 67 end 68 end 69 70 w=[1;w(2)/w(1);w(3)/w(1)]; 71 72 %%Calculate the decision boundary line 73 plot_x = [min(x(:,2)), max(x(:,2))]; 74 plot_y = (-1./w(3)).*(w(2).*plot_x +w(1)); 75 plot(plot_x, plot_y) 76 legend(\'Admitted\', \'Not admitted\', \'Decision Boundary\') 77 hold off
以上是关于perceptron and ANN的主要内容,如果未能解决你的问题,请参考以下文章
DL之Perceptron:感知器(多层感知机/人工神经元)的原理之基于numpy定义2层感知机底层逻辑代码(与门AND/与非门NAND/或门OR是)解决XOR异或问题之详细攻略
matlab 实现感知机线性二分类算法(Perceptron)
[RxJS] Implement RxJS `mergeMap` through inner Observables to Subscribe and Pass Values Through(代码片段