zoukankan      html  css  js  c++  java
  • matlab实现感知机算法统计学习小灶

     1 clear all;
     2 clc;
     3 %%
     4 %算法
     5 %输入:训练数据集T = {(x1,y1),(x2,y2),...,(xn,yn)};学习率η
     6 %输出:w,b;感知机模型f(x) = sign(w*x+b)
     7 %(1)选取初值w0,b0
     8 %(2)在训练集中选取数据(xi,yi)
     9 %(3)如果yi(w*xi+b)<=0
    10 %                   w = w+η*yi*xi
    11 %                   b = b+ηyi
    12 %(4)转至(2),直至训练集中没有误分类点
    13 %%
    14 
    15 %初始化
    16 X = [3 3 1;4 3 1;1 1 -1];%训练集
    17 [sn,fn] = size(X);
    18 y = X(:,fn);%标签
    19 X(:,fn) = [];
    20 fn = fn-1;
    21 w = zeros(2,1);
    22 b = 0;
    23 yta = 1;%参数η
    24 ok = 0;
    25 %%
    26 %循环体
    27 while(ok==0)%%%不断的扫描直到所有的实例都满足无误分类点才结束
    28     for i = 1:sn
    29         if (y(i)*(w'*X(i,:)'+b)<=0)
    30         
    31             w = w + yta*y(i)*X(i,:)'
    32             b = b + yta*y(i)
    33         else
    34             if(i == sn) ok=1;
    35                 break
    36             end
    37       end
    38     end
    39 end
    40 
    41 %%
    42 %图示
    43 figure(1) 
    44 plot(X(1,:),X(2,:),'r.') 
    45 hold on 
    46 plot(X(3,:),'*') %样本
    47 xmin=min(X(:,1));
    48 xmax=max(X(:,1)); 
    49 % ymin=min(X(:,2)); 
    50 % ymax=max(X(:,2)); 
    51 xindex=xmin-1:(xmax-xmin)/100:xmax+1; 
    52 yindex=w(1)*xindex+w(2)*xindex+b; 
    53 plot(xindex,yindex)%分类面
  • 相关阅读:
    转: winform间的传值并linklabel动态窗口跳转
    app.config配置
    RSS2.0中文规范
    windows forms 窗口跳转
    C#对DataGridView进行添加、修改、删除数据操作
    小小一颗心
    小记上海一天
    又一个婉约的日子
    七夕节
    我的实习
  • 原文地址:https://www.cnblogs.com/weimiaomiao/p/4758769.html
Copyright © 2011-2022 走看看