1. 程式人生 > 其它 >簡單易學的機器學習演算法——Rosenblatt感知機

簡單易學的機器學習演算法——Rosenblatt感知機

一、感知機的概念

二、感知機模型的訓練

    1、目標函式   

    2、感知機的訓練過程

三、例項

    選自《統計學習方法》,訓練集為:正例項點是

負例項點是

原始點集

MATLAB程式碼

%讀入資料
x=[3,3;4,3;1,1];
y=[1;1;-1];

%--初始化w和b
w = [0,0];
b = 0;
a = 1;%步長

%--選擇未能初始化的點
flag = 0;

i = 1;
while flag~=1
    while i <= 3
        t = y(i)*(w*x(i,:)'+b);
        if t <= 0
            w = w + a*y(i,:)*x(i,:);
            b = b + a*y(i,:);
            i = 1;%重置i
            break;
        else
            i = i+1;
        end
        if i == 4
            flag = 1;
        end
    end
end
%畫出分隔線
hold on
axis([0 5 0 5]);%axis一般用來設定axes的樣式,包括座標軸範圍,可讀比例等
for j = 1:3
    plot(x(j,1),x(j,2),'.');
    m(1,j) = (-b-w(1)*j)./(w(2));
end
j = 1:3;
plot(j,m);

分類結果