感知器算法(perceptron algorithm)

本文介绍了一种模式识别算法的实现过程,包括初始化参数、输入训练模式、计算判别函数值及调整权重等步骤,并提供了完整的Matlab代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法实现步骤

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

红包金额最低5元

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

抵扣说明:

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

余额充值