感知器算法(perceptron algorithm)

来源:互联网 发布:淘宝如何设置店招导航 编辑:程序博客网 时间:2024/05/18 13:45

算法实现步骤

给定一个增广的训练模式集{y1,y2yN},w1,w2:

  1. 给定初步数始值K=0ρ=C,(C)广W(0)赋任意小的值;
  2. 输入训练模式yK,W(K)TyK;
  3. 校正增广权矢量,校正规则是:
    yKw1W(K)TyK0W(K+1)=W(K)+ρyK;
    yKw2W(K)TyK0W(K+1)=W(K)ρyK;
    否则不需校正即:W(K+1)=W(K).

    w2类各个分量乘(1),则校正规则为:
    W(K)TyK0W(K+1)=W(K)+ρyK;

  4. K=K+1,继续第二步,直到W对所有的样本均稳定不变,即对样本进行正确分类结束。

Matlab代码实现

clear all;close all;clc;%给定样本:%w1 = (x1,x2) = {(0,0),(0,1)}%w2 =(x3,x4)= {(1,0),(1,1)}x1 = [0,0];x2 = [0,1];x3 = [1,0];x4 = [1,1];%增广型训练模式集y1 = [x1,1];y2 = [x2,1];y3 = [-x3,-1];y4 = [-x4,-1];y = [y1;y2;y3;y4];%给定初始权矢量,增量,步数W = [1;1;1]; P = 1; K = 0;d = zeros(4,2000);%用来存储判别函数for i = 1:2000    for j = 1:4        K = K + 1;        d(j,i) = y(j,:)*W;        if d(j,i) <= 0                 W = W + y(j,:)';%当d<=0,需校正;d>0,不校正        end    end    if d(:,i)>0    %迭代到所有训练样本的判别函数大于0时,结束迭代,输出解向量        disp( '所求的解向量W为:');        disp( num2str(W));        break    endend

结果图

5 0