zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Windows安装Linux虚拟机(CentOS7)
    模拟随机双色球
    git忽略文件夹提交以及gitignore修改后不生效的解决办法
    PHP随手记2--获取随机n位不重复字符
    PHP随手记1--内置函数date
    cocos2d-x源码分析-----触摸事件的实现
    cocos2d-x源码分析-----主循环(android)
    2014年的计划
    cocos2d-x源码分析-----入口分析(android)
    C++中二进制数据强制转换问题
  • 原文地址:https://www.cnblogs.com/pkjplayer/p/6435254.html
Copyright © 2011-2022 走看看