天天看點

感覺器算法(perceptron algorithm)

算法實作步驟

給定一個增廣的訓練模式集 {y1,y2,⋅⋅⋅,yN},其中每個模式類别已知,它們分别屬于w1類,w2類 :

  1. 給定初步數始值 K=0,令增量ρ=C,(C為正常數),給定初始增廣權矢量W(0) 賦任意小的值;
  2. 輸入訓練模式 yK,計算判别函數值:W(K)T∗yK ;
  3. 校正增廣權矢量,校正規則是:

    若 yK∈w1和W(K)T∗yK≤0則:W(K+1)=W(K)+ρ∗yK ;

    若 yK∈w2和W(K)T∗yK≥0則:W(K+1)=W(K)−ρ∗yK ;

    否則不需校正即: W(K+1)=W(K) .

    若 w2 類各個分量乘 (−1), 則校正規則為:

    W(K)T∗yK≤0則:W(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 = [,];x2 = [,];x3 = [,];x4 = [,];
%增廣型訓練模式集
y1 = [x1,];y2 = [x2,];y3 = [-x3,-];y4 = [-x4,-];
y = [y1;y2;y3;y4];
%給定初始權矢量,增量,步數
W = [;;]; P = ; K = ;

d = zeros(,);%用來存儲判别函數
for i = :
    for j = :
        K = K + ;
        d(j,i) = y(j,:)*W;
        if d(j,i) <=      
            W = W + y(j,:)';%當d<=0,需校正;d>0,不校正
        end
    end
    if d(:,i)>0    %疊代到所有訓練樣本的判别函數大于0時,結束疊代,輸出解向量
        disp( '所求的解向量W為:');
        disp( num2str(W));
        break
    end
end
           

結果圖

感覺器算法(perceptron algorithm)

繼續閱讀