感知器算法(perceptron algorithm)

算法实现步骤

给定一个增广的训练模式集 {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
    end
end

结果图

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值